bend_puzzle/test/reset-smoke-test.js

24 lines
1.4 KiB
JavaScript
Raw Normal View History

2026-07-30 15:13:53 +09:00
'use strict';
const {vm,app,assert,functionSource}=require('./helpers/app-source');
const removed=[],deleted=[];
const staleSessionJournal='bend-field:v30:v47-field-reset-20260727:journal:stale-session',retired=[
{schema:31,generation:'v47-field-reset-20260728-bugfix'},
{schema:30,generation:'v47-field-reset-20260727'}
];
const context={
RETIRED_WORLD_STORES:retired,
safeLocalRemove:key=>{removed.push(key);return true},
safeLocalKeys:prefix=>staleSessionJournal.startsWith(prefix)?[staleSessionJournal]:[],
indexedDB:{deleteDatabase:name=>deleted.push(name)}
};
vm.createContext(context);
vm.runInContext(`${functionSource('deleteRetiredWorldData')}\nthis.run=deleteRetiredWorldData;`,context);
context.run();
for(const item of retired){
const prefix=`bend-field:v${item.schema}:${item.generation}`;
for(const suffix of[':compact',':recovery',':journal',':revision',':signal',':world:lease'])assert(removed.includes(prefix+suffix),`Old save ${suffix} was not removed`);
assert(deleted.includes(`${prefix}:world`),'Old IndexedDB was not deleted');
}
assert(removed.includes(staleSessionJournal),'Old per-session recovery journal was not removed');
assert(app.includes("SAVE_SCHEMA=31,STORAGE_SCHEMA=30,IDB_LAYOUT_VERSION=8,FIELD_STORAGE_FORMAT=2,GAMEPLAY_DATA_VERSION=3,WORLD_GENERATION='v47-field-reset-20260728-interaction-fix'"),'v47.36 interaction-fix field reset generation is not active');
console.log('Full field reset test passed');