| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- const assert = require('node:assert/strict')
- const {
- applyGenerationStatus,
- replaceFirstPage,
- extractReportId,
- shouldResumePolling,
- reconcileStatusQueryError,
- createStatusRequestState,
- setStatusPageVisible,
- beginStatusRequest,
- shouldApplyStatusResponse,
- finishStatusRequest,
- createListRefreshState,
- beginListRefresh,
- createListRequestMeta,
- shouldApplyListResponse,
- beginListPageRequest,
- finishListPageRequest
- } = require('../utils/reportGenerationStatus')
- const failedState = applyGenerationStatus({ state:-1, errorMessage:'Step 4 failed' })
- assert.equal(failedState.title, '报告生成失败')
- assert.equal(failedState.errorMessage, 'Step 4 failed')
- assert.equal(failedState.polling, false)
- assert.deepEqual(
- replaceFirstPage([{ reportId:9, state:0 }], [{ reportId:9, state:-1 }]),
- [{ reportId:9, state:-1 }]
- )
- const nextFirstPage = [{ reportId:10, state:1 }]
- const replacedFirstPage = replaceFirstPage([{ reportId:9, state:0 }], nextFirstPage)
- assert.deepEqual(replacedFirstPage, nextFirstPage)
- assert.notEqual(replacedFirstPage, nextFirstPage)
- assert.equal(shouldResumePolling(9, { state:0 }), true)
- assert.equal(shouldResumePolling(9, { state:1 }), false)
- assert.equal(shouldResumePolling('', { state:0 }), false)
- const retryAfterTransientError = reconcileStatusQueryError({ reportId:9, state:0, status:'RUNNING' })
- assert.equal(retryAfterTransientError.state, 0)
- assert.equal(retryAfterTransientError.polling, true)
- assert.equal(retryAfterTransientError.title, '报告正在生成中~')
- assert.equal(retryAfterTransientError.imageKey, 'success')
- const statusState = createStatusRequestState()
- assert.equal(beginStatusRequest(statusState), null)
- setStatusPageVisible(statusState, true)
- const firstStatusRequest = beginStatusRequest(statusState)
- assert.deepEqual(firstStatusRequest, { requestId:1, visibilityToken:0 })
- assert.equal(beginStatusRequest(statusState), null)
- assert.equal(shouldApplyStatusResponse(statusState, firstStatusRequest), true)
- setStatusPageVisible(statusState, false)
- assert.equal(shouldApplyStatusResponse(statusState, firstStatusRequest), false)
- setStatusPageVisible(statusState, true)
- const resumedStatusRequest = beginStatusRequest(statusState)
- assert.deepEqual(resumedStatusRequest, { requestId:2, visibilityToken:1 })
- finishStatusRequest(statusState, resumedStatusRequest)
- assert.equal(statusState.statusRequestInFlight, false)
- const listRefreshState = createListRefreshState()
- const firstGeneration = beginListRefresh(listRefreshState)
- const secondGeneration = beginListRefresh(listRefreshState)
- assert.equal(firstGeneration, 1)
- assert.equal(secondGeneration, 2)
- assert.equal(shouldApplyListResponse(listRefreshState.refreshGeneration, createListRequestMeta(firstGeneration, 1)), false)
- assert.equal(shouldApplyListResponse(listRefreshState.refreshGeneration, createListRequestMeta(secondGeneration, 1)), true)
- const pageRequest = beginListPageRequest(listRefreshState, secondGeneration, 2)
- assert.deepEqual(pageRequest, { generation:2, page:2, key:'2:2' })
- assert.equal(beginListPageRequest(listRefreshState, secondGeneration, 2), null)
- finishListPageRequest(listRefreshState, pageRequest)
- assert.deepEqual(beginListPageRequest(listRefreshState, secondGeneration, 2), { generation:2, page:2, key:'2:2' })
- assert.equal(extractReportId(12), 12)
- assert.equal(extractReportId({ reportId:13 }), 13)
- assert.equal(extractReportId({ dto:{ reportId:14 } }), 14)
- assert.equal(extractReportId({ info:{ id:15 } }), 15)
- console.log('report generation status rules: PASS')
|