74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { describe, expect, test } from 'vitest';
|
|
|
|
import { createMiniGameDraftGenerationState } from '../../services/miniGameDraftGenerationProgress';
|
|
import { shouldTickPlatformGenerationProgressClock } from './platformGenerationProgressClock';
|
|
|
|
describe('platformGenerationProgressClock', () => {
|
|
test('ticks while puzzle clear generation is still running', () => {
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'puzzle-clear-generating',
|
|
generationState: createMiniGameDraftGenerationState('puzzle-clear'),
|
|
}),
|
|
).toBe(true);
|
|
});
|
|
|
|
test('stops ticking after puzzle clear generation is ready or failed', () => {
|
|
const runningState = createMiniGameDraftGenerationState('puzzle-clear');
|
|
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'puzzle-clear-generating',
|
|
generationState: { ...runningState, phase: 'ready' },
|
|
}),
|
|
).toBe(false);
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'puzzle-clear-generating',
|
|
generationState: { ...runningState, phase: 'failed' },
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
|
|
test('ticks for other shared mini game generation stages', () => {
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'jump-hop-generating',
|
|
generationState: createMiniGameDraftGenerationState('jump-hop'),
|
|
}),
|
|
).toBe(true);
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'wooden-fish-generating',
|
|
generationState: createMiniGameDraftGenerationState('wooden-fish'),
|
|
}),
|
|
).toBe(true);
|
|
});
|
|
|
|
test('ticks visual novel generation from its phase source', () => {
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'visual-novel-generating',
|
|
visualNovelGenerationStartedAtMs: 1000,
|
|
visualNovelGenerationPhase: 'generating',
|
|
}),
|
|
).toBe(true);
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'visual-novel-generating',
|
|
visualNovelGenerationStartedAtMs: 1000,
|
|
visualNovelGenerationPhase: 'ready',
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
|
|
test('does not tick when no generating stage is active', () => {
|
|
expect(
|
|
shouldTickPlatformGenerationProgressClock({
|
|
selectionStage: 'platform',
|
|
generationState: createMiniGameDraftGenerationState('puzzle-clear'),
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
});
|