24 lines
1.4 KiB
JavaScript
24 lines
1.4 KiB
JavaScript
|
|
'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');
|