feat(content): migrate stub actions to kind/group model

This commit is contained in:
ginnoir
2026-06-11 20:23:49 -05:00
parent c1b38e36aa
commit b54805637c
9 changed files with 83 additions and 13 deletions
+7 -2
View File
@@ -5,6 +5,8 @@ import { createGameState, enqueueAction, startAction } from '../../engine/game';
import { enterStoryNode } from '../../engine/story';
import { formatOfflineDuration, toView } from '../viewModel';
const DEFAULT_GROUP = { id: 'test', label: 'Test' };
function testContent() {
const base = buildContent({
resources: [{ id: 'gold', name: 'Gold', startAmount: 4 }],
@@ -12,6 +14,7 @@ function testContent() {
{
id: 'forage',
name: 'Forage',
group: DEFAULT_GROUP,
durationMs: 200,
yields: [{ resourceId: 'gold', amount: 1 }],
},
@@ -87,8 +90,8 @@ describe('toView()', () => {
const content = contentWithActions(
[{ id: 'gold', name: 'Gold' }],
[
{ id: 'a', name: 'Alpha', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'b', name: 'Bravo', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'a', name: 'Alpha', group: DEFAULT_GROUP, durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'b', name: 'Bravo', group: DEFAULT_GROUP, durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
],
);
const state = createGameState(content);
@@ -108,6 +111,7 @@ describe('toView() action availability', () => {
{
id: 'locked',
name: 'Locked',
group: DEFAULT_GROUP,
durationMs: 1000,
yields: [{ resourceId: 'coin', amount: 1 }],
unlock: { requireStoryFlags: ['route_a'] },
@@ -127,6 +131,7 @@ describe('toView() action availability', () => {
{
id: 'forage',
name: 'Forage',
group: DEFAULT_GROUP,
durationMs: 1000,
yields: [{ resourceId: 'coin', amount: 1 }],
},