优化
This commit is contained in:
@@ -1,7 +1,26 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { run } from './appointment-work.mjs'
|
||||
import { run, readAfterSynchronization } from './appointment-work.mjs'
|
||||
|
||||
test('同步就绪只重试明确协调状态,超限及其他错误原样保留', async () => {
|
||||
const coordinating = {http:200,body:{code:'A0409',message:'预约批次或运输关联已变化,服务端正在协调完整工作清单'}}
|
||||
const success = {http:200,body:{code:'200',data:{}}}
|
||||
let calls = 0
|
||||
assert.equal(await readAfterSynchronization({request:async()=>++calls === 1 ? coordinating : success}, '/summary', {attempts:3,delay:async()=>{}}),success)
|
||||
assert.equal(calls,2)
|
||||
const scopeChanged = {http:200,body:{code:'A0409',message:'已开船工作范围变化,请先完成服务端同步'}}
|
||||
calls=0
|
||||
assert.equal(await readAfterSynchronization({request:async()=>++calls===1?scopeChanged:success}, '/summary', {attempts:3,delay:async()=>{}}),success)
|
||||
assert.equal(calls,2)
|
||||
calls=0
|
||||
assert.equal(await readAfterSynchronization({request:async()=>{calls++;return coordinating}}, '/summary', {attempts:3,delay:async()=>{}}),coordinating)
|
||||
assert.equal(calls,3)
|
||||
const other={http:500,body:{code:'S0500'}}
|
||||
assert.equal(await readAfterSynchronization({request:async()=>other}, '/summary', {delay:async()=>assert.fail('must not retry')}),other)
|
||||
const conflict={http:200,body:{code:'A0409',message:'预约版本冲突'}}
|
||||
assert.equal(await readAfterSynchronization({request:async()=>conflict}, '/summary', {delay:async()=>assert.fail('must not retry unrelated conflict')}),conflict)
|
||||
})
|
||||
|
||||
const entry = readFileSync(new URL('../admin-test-env-acceptance.mjs', import.meta.url), 'utf8')
|
||||
const moduleSource = readFileSync(new URL('./appointment-work.mjs', import.meta.url), 'utf8')
|
||||
|
||||
Reference in New Issue
Block a user