Files
Genarrative/apps/ai-game-creator-shell/tests/appSurface.test.ts
T
suzmii 8f96b05f6e 资源画布工具条接回下载按钮:走资源面板同一条真链路并收紧放行判据
- index.tsx 把资源面板的保存流程抽成共用 saveProjectResourcesToDisk(原生保存对话框 + save_local_project_asset_file),资源面板改为委派调用,不再有第二份保存实现

- index.tsx 工具条 onDownloadLayer 由空回调改为调用该共用 handler,回执写进 resourceWorkbenchNotice;不可导出的资源仍直接返回

- resourceCanvasToolbarModel.ts 把 download 加回 supportedActions,判据是 isResourceCanvasExportable(拿不到本地文件路径就不渲染),不按媒体类型放行

- resourceCanvasToolbarModel.test.ts 期望值随判据重算为 [quick-edit, download] 或 [download],并补 download 放行与拒绝两侧用例(空 path、虚拟版本条目)

- project-development.suite.ts 音频工具条按钮集合断言更新为 [分类与标签, 重命名, 下载按钮],并新增两条真链路断言:工具条下载打到 save_local_project_asset_file、资源面板下载仍打到同一命令

- appSurface.test.ts 在入口文件 mock 原生对话框,只替代用户选择目标路径这一步;放别处注册会晚于真实模块实例化
2026-09-10 18:05:15 +08:00

76 lines
3.0 KiB
TypeScript

/** @vitest-environment jsdom */
import { vi } from 'vitest';
import { registerAgentRuntimeCommandTests } from './appSurface/agent-runtime.suite';
import { registerAuthTests } from './appSurface/auth.suite';
import {
registerDeveloperAgentWindowTests,
registerDeveloperToolsTests,
} from './appSurface/developer-agent-window.suite';
import { describe } from './appSurface/harness';
import {
registerClientHomeTests,
registerHomeProjectCreationTests,
registerRecentProjectsTests,
} from './appSurface/home.suite';
import { registerPlanGddApprovalTests } from './appSurface/plan-gdd.suite';
import {
registerCanvasAssetTests,
registerProjectAssetTests,
} from './appSurface/project-assets.suite';
import { registerProjectCommandTests } from './appSurface/project-commands.suite';
import { registerProjectConversationTests } from './appSurface/project-conversation.suite';
import {
registerProjectAgentStatusTests,
registerProjectSupervisorSurfaceTests,
registerProjectWorkbenchFoundationTests,
registerProjectWorkbenchNavigationTests,
registerUserSurfaceBoundaryTests,
} from './appSurface/project-development.suite';
import { registerProjectPreviewAndRunHistoryTests } from './appSurface/project-preview.suite';
import {
registerAgentStatusDerivationTests,
registerPublishedRuntimeSettingsTests,
registerRuntimeSettingsTests,
} from './appSurface/runtime-settings.suite';
import { registerSupervisorRuntimeTests } from './appSurface/supervisor-runtime.suite';
/**
* 原生文件对话框是宿主能力,不能在 jsdom 里真开窗。
*
* 这里只替代"用户选了哪个目标路径"这一件事:`save` 按调用方给的建议文件名返回一个
* 固定的导出路径,让「下载」用例能断言工具条真的走到了 `save_local_project_asset_file`。
* 声明必须留在入口文件:`project-assets.suite` 等模块比 `project-development.suite`
* 更早 import 工作台视图,放在别处注册会晚于真实模块实例化。
*/
vi.mock('@tauri-apps/plugin-dialog', () => ({
open: async () => null,
save: async (options?: { defaultPath?: string }) =>
options?.defaultPath ? `/tmp/native-export/${options.defaultPath}` : null,
}));
describe('AI 游戏创作 App 界面边界', () => {
registerProjectWorkbenchFoundationTests();
registerAuthTests();
registerAgentStatusDerivationTests();
registerUserSurfaceBoundaryTests();
registerClientHomeTests();
registerDeveloperAgentWindowTests();
registerHomeProjectCreationTests();
registerProjectSupervisorSurfaceTests();
registerRuntimeSettingsTests();
registerRecentProjectsTests();
registerProjectWorkbenchNavigationTests();
registerProjectPreviewAndRunHistoryTests();
registerProjectConversationTests();
registerProjectAgentStatusTests();
registerPublishedRuntimeSettingsTests();
registerDeveloperToolsTests();
registerProjectCommandTests();
registerSupervisorRuntimeTests();
registerProjectAssetTests();
registerAgentRuntimeCommandTests();
registerCanvasAssetTests();
registerPlanGddApprovalTests();
});