6 lines
1021 B
JavaScript
6 lines
1021 B
JavaScript
import assert from'node:assert/strict';import{confirmation}from'../public/sgf-stock-final.mjs';
|
|
let calls=[],answer;const op=confirmation(async body=>{calls.push(JSON.stringify(body));if(answer instanceof Error)throw answer;return answer;});const body={preview:'opaque synthetic conference'};
|
|
answer=Error('network lost');await assert.rejects(()=>op.run(body));assert(op.uncertain);await assert.rejects(()=>op.run({preview:'changed'}));assert.equal(calls.length,1);
|
|
answer={status:503,value:{message:'busy'}};await assert.rejects(()=>op.retry());assert(op.pending);answer={status:200,value:{replayed:true,movement_id:7}};const r=await op.retry();assert.equal(r.movement_id,7);assert.equal(new Set(calls).size,1);assert(!op.pending);
|
|
answer={status:409,value:{message:'stale'}};await assert.rejects(()=>op.run({preview:'old'}),/stale/);assert(!op.pending);answer={status:200,value:{}};await assert.rejects(()=>op.run(body));assert(op.uncertain);console.log(JSON.stringify({passed:true,checks:9,dom_visual_review:false}));
|