feat(state): wire enqueueAction through runtime and view model
This commit is contained in:
@@ -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()', () => {
|
||||
|
||||
Reference in New Issue
Block a user