feat(engine): track manualCompletionCounts on action complete
This commit is contained in:
@@ -79,6 +79,22 @@ describe('createSave()', () => {
|
||||
state.enabledLoopActionIds.rest = false;
|
||||
expect(save.state.enabledLoopActionIds).toEqual({ rest: true });
|
||||
});
|
||||
|
||||
it('snapshots manualCompletionCounts and automationQueue in the save payload', () => {
|
||||
const state = sampleState() as ReturnType<typeof sampleState> & {
|
||||
manualCompletionCounts: Record<string, number>;
|
||||
automationQueue: string[];
|
||||
};
|
||||
state.manualCompletionCounts = { forage: 2 };
|
||||
state.automationQueue = ['forage'];
|
||||
const save = createSave(state, 1700);
|
||||
expect(save.state.manualCompletionCounts).toEqual({ forage: 2 });
|
||||
expect(save.state.automationQueue).toEqual(['forage']);
|
||||
state.manualCompletionCounts.forage = 3;
|
||||
state.automationQueue.push('forage');
|
||||
expect(save.state.manualCompletionCounts).toEqual({ forage: 2 });
|
||||
expect(save.state.automationQueue).toEqual(['forage']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('serialize / deserialize round-trip', () => {
|
||||
@@ -101,6 +117,18 @@ describe('serialize / deserialize round-trip', () => {
|
||||
expect(restored.state.enabledLoopActionIds).toEqual({ rest: true, patrol: false });
|
||||
});
|
||||
|
||||
it('preserves manualCompletionCounts and automationQueue through a round-trip', () => {
|
||||
const state = sampleState() as ReturnType<typeof sampleState> & {
|
||||
manualCompletionCounts: Record<string, number>;
|
||||
automationQueue: string[];
|
||||
};
|
||||
state.manualCompletionCounts = { forage: 4 };
|
||||
state.automationQueue = ['forage'];
|
||||
const restored = deserializeSave(serializeSave(createSave(state, 1700)));
|
||||
expect(restored.state.manualCompletionCounts).toEqual({ forage: 4 });
|
||||
expect(restored.state.automationQueue).toEqual(['forage']);
|
||||
});
|
||||
|
||||
it('defaults enabledLoopActionIds to {} when absent from save JSON', () => {
|
||||
const json = JSON.stringify({
|
||||
version: 1,
|
||||
@@ -114,6 +142,21 @@ describe('serialize / deserialize round-trip', () => {
|
||||
const restored = deserializeSave(json);
|
||||
expect(restored.state.enabledLoopActionIds).toEqual({});
|
||||
});
|
||||
|
||||
it('defaults manualCompletionCounts and automationQueue 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.manualCompletionCounts).toEqual({});
|
||||
expect(restored.state.automationQueue).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('invalid / tampered saves', () => {
|
||||
|
||||
Reference in New Issue
Block a user