Batch authoritative snapshots and bound rejected retreat fallback

This commit is contained in:
Codex
2026-09-25 09:24:51 +08:00
parent d573ae2345
commit 9d1575b8c6
6 changed files with 81 additions and 5 deletions
+11
View File
@@ -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);
});