387a1c26e3
清理已跟踪原始日志与个人本地配置 修复前后端有效门禁、测试和构建问题 补齐生产 Jenkins、SpacetimeDB 本地命令与文档约束 收紧图片编辑器状态、附件与媒体引用测试 排除已下线旧创作入口测试并清理 warning
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import type { PuzzleAgentSessionSnapshot } from '../../../packages/shared/src/contracts/puzzleAgentSession';
|
|
import { isPuzzleCompileActionReady } from './puzzleDraftGenerationState';
|
|
|
|
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('keeps compile action generating when only the selected cover exists', () => {
|
|
const session = {
|
|
sessionId: 'puzzle-session-1',
|
|
draft: {
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
levels: [
|
|
{
|
|
generationStatus: 'generating',
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
},
|
|
],
|
|
},
|
|
} as PuzzleAgentSessionSnapshot;
|
|
|
|
expect(isPuzzleCompileActionReady(session)).toBe(false);
|
|
});
|
|
|
|
it('treats compile action as ready after all runtime assets exist', () => {
|
|
const session = {
|
|
sessionId: 'puzzle-session-1',
|
|
draft: {
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
levels: [
|
|
{
|
|
generationStatus: 'ready',
|
|
coverImageSrc: '/generated-puzzle-assets/session/cover.png',
|
|
levelSceneImageObjectKey:
|
|
'generated-puzzle-assets/session/level-scene.png',
|
|
uiSpritesheetImageObjectKey:
|
|
'generated-puzzle-assets/session/ui-spritesheet.png',
|
|
levelBackgroundImageObjectKey:
|
|
'generated-puzzle-assets/session/level-background.png',
|
|
},
|
|
],
|
|
},
|
|
} as PuzzleAgentSessionSnapshot;
|
|
|
|
expect(isPuzzleCompileActionReady(session)).toBe(true);
|
|
});
|
|
});
|