Batch authoritative snapshots and bound rejected retreat fallback
This commit is contained in:
@@ -34,3 +34,14 @@ test('surface inventory includes every documented ALE class family',()=>{
|
||||
assert.equal(ALE_SURFACE.playerbotClasses.length,7);
|
||||
assert.equal(ALE_SURFACE.modelAccess,'none');
|
||||
});
|
||||
|
||||
test('snapshot batch saves once and does not commit a partial invalid roster',async()=>{
|
||||
const {applyAuthoritativeAleSnapshots}=require('../.test-build/service.js');
|
||||
const {seed}=require('../.test-build/seed.js');
|
||||
let state=seed(),writes=0;
|
||||
const store={load:async()=>structuredClone(state),save:async(s,r)=>{assert.equal(r,state.revision);writes++;state=s;}};
|
||||
await applyAuthoritativeAleSnapshots(store,[{roster:true,observedAt:100,characterGuids:[]},{roster:true,observedAt:101,characterGuids:[]}]);
|
||||
assert.equal(writes,1);assert.equal(state.aleRosterAt,101);
|
||||
await assert.rejects(()=>applyAuthoritativeAleSnapshots(store,[{roster:true,observedAt:102,characterGuids:[]},{roster:true,observedAt:103,characterGuids:[-1]}]));
|
||||
assert.equal(writes,1);assert.equal(state.aleRosterAt,101);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user