feat(engine): loop idle runner with enabledLoopActionIds
This commit is contained in:
@@ -70,6 +70,15 @@ describe('createSave()', () => {
|
||||
expect(save.state.currentStoryNodeId).toBe('route_a_beat');
|
||||
expect(save.state.seenStoryNodeIds).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('snapshots enabledLoopActionIds in the save payload and isolates from mutation', () => {
|
||||
const state = sampleState();
|
||||
state.enabledLoopActionIds = { rest: true };
|
||||
const save = createSave(state, 1700);
|
||||
expect(save.state.enabledLoopActionIds).toEqual({ rest: true });
|
||||
state.enabledLoopActionIds.rest = false;
|
||||
expect(save.state.enabledLoopActionIds).toEqual({ rest: true });
|
||||
});
|
||||
});
|
||||
|
||||
describe('serialize / deserialize round-trip', () => {
|
||||
@@ -84,6 +93,27 @@ describe('serialize / deserialize round-trip', () => {
|
||||
const restored = fromExportString(toExportString(save));
|
||||
expect(restored).toEqual(save);
|
||||
});
|
||||
|
||||
it('preserves enabledLoopActionIds through a round-trip', () => {
|
||||
const state = sampleState();
|
||||
state.enabledLoopActionIds = { rest: true, patrol: false };
|
||||
const restored = deserializeSave(serializeSave(createSave(state, 1700)));
|
||||
expect(restored.state.enabledLoopActionIds).toEqual({ rest: true, patrol: false });
|
||||
});
|
||||
|
||||
it('defaults enabledLoopActionIds to {} when absent from save JSON', () => {
|
||||
const json = JSON.stringify({
|
||||
version: 1,
|
||||
savedAt: 1700,
|
||||
state: {
|
||||
resources: { gold: 0 },
|
||||
activeActionId: null,
|
||||
actionElapsedMs: 0,
|
||||
},
|
||||
});
|
||||
const restored = deserializeSave(json);
|
||||
expect(restored.state.enabledLoopActionIds).toEqual({});
|
||||
});
|
||||
});
|
||||
|
||||
describe('invalid / tampered saves', () => {
|
||||
|
||||
Reference in New Issue
Block a user