41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { isPuzzleCompileActionReady } from './puzzleDraftGenerationState';
|
|
import type { PuzzleAgentSessionSnapshot } from '../../../packages/shared/src/contracts/puzzleAgentSession';
|
|
|
|
describe('isPuzzleCompileActionReady', () => {
|
|
it('keeps compile action generating until the draft has a cover image', () => {
|
|
const session = {
|
|
sessionId: 'puzzle-session-1',
|
|
draft: {
|
|
coverImageSrc: null,
|
|
levels: [
|
|
{
|
|
generationStatus: 'generating',
|
|
coverImageSrc: null,
|
|
},
|
|
],
|
|
},
|
|
} as PuzzleAgentSessionSnapshot;
|
|
|
|
expect(isPuzzleCompileActionReady(session)).toBe(false);
|
|
});
|
|
|
|
it('treats compile action as ready after the selected cover exists', () => {
|
|
const session = {
|
|
sessionId: 'puzzle-session-1',
|
|
draft: {
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
levels: [
|
|
{
|
|
generationStatus: 'ready',
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
},
|
|
],
|
|
},
|
|
} as PuzzleAgentSessionSnapshot;
|
|
|
|
expect(isPuzzleCompileActionReady(session)).toBe(true);
|
|
});
|
|
});
|