48c7cce1ba
合入 master 最新的认证、玩法契约与推荐页改动。 修复拼图草稿生成、推荐页下一关和公开详情访客试玩回归。 修复抓大鹅草稿试玩鉴权与首屏推荐详情测试入口。 补齐相关测试夹具、文档与团队记忆更新。
64 lines
2.0 KiB
TypeScript
64 lines
2.0 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('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);
|
|
});
|
|
});
|