23 lines
959 B
TypeScript
23 lines
959 B
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { content } from '../../content/index';
|
|
import { createGameState, executeStoryAction } from '../game';
|
|
import { enterStoryNode } from '../story';
|
|
|
|
describe('executeStoryAction()', () => {
|
|
it('applies the linked story choice', () => {
|
|
const state = createGameState(content);
|
|
enterStoryNode(state, content, 'fork_choice');
|
|
executeStoryAction(state, content, 'pick_high_road');
|
|
expect(state.storyFlags.route_a).toBe(true);
|
|
expect(state.currentStoryNodeId).toBe('route_a_beat');
|
|
});
|
|
|
|
it('throws when the choice is not available', () => {
|
|
const state = createGameState(content);
|
|
enterStoryNode(state, content, 'fork_choice');
|
|
executeStoryAction(state, content, 'pick_high_road');
|
|
// after taking route A, the current node has no choices, so follow_river (pick_b) is unavailable
|
|
expect(() => executeStoryAction(state, content, 'follow_river')).toThrow();
|
|
});
|
|
});
|