feat(state): wire enqueueAction through runtime and view model

This commit is contained in:
ginnoir
2026-06-11 18:21:12 -05:00
parent 7625e081fd
commit fce561b8e5
5 changed files with 38 additions and 8 deletions
+17 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import { buildContent } from '../../content/schema';
import { createGameState, startAction } from '../../engine/game';
import { createGameState, enqueueAction, startAction } from '../../engine/game';
import { formatOfflineDuration, toView } from '../viewModel';
function testContent() {
@@ -44,6 +44,22 @@ describe('toView()', () => {
state.actionElapsedMs = 999;
expect(toView(state, content).actionProgress).toBe(1);
});
it('includes queued action ids in order', () => {
const content = buildContent({
resources: [{ id: 'gold', name: 'Gold' }],
actions: [
{ id: 'a', name: 'Alpha', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'b', name: 'Bravo', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
],
});
const state = createGameState(content);
enqueueAction(state, content, 'a');
enqueueAction(state, content, 'b');
const view = toView(state, content);
expect(view.queuedActionIds).toEqual(['b']);
expect(view.queuedActionNames).toEqual(['Bravo']);
});
});
describe('formatOfflineDuration()', () => {