import { describe, expect, it, vi } from 'vitest'; import { createUiDesignDocFromImages } from '../src/features/ui-editor/uiDesignResourceBridge'; describe('ui design resource bridge', () => { it('rejects an empty image list without invoking the command', async () => { const invoke = vi.fn(); await expect( createUiDesignDocFromImages({ projectPath: '/project', expectedProjectId: 'project-1', images: [], invoke, }), ).rejects.toThrow('请至少选择一张界面图'); expect(invoke).not.toHaveBeenCalled(); }); it('creates a document through the command with the project identity injected', async () => { const created = { asset: { id: 'ui-1' }, manifest: { projectId: 'project-1' }, relativePath: 'ui/UI 设计 1.json', imageIds: ['image-a'], committedProjectRevision: 7, }; const invoke = vi.fn().mockResolvedValue(created); const result = await createUiDesignDocFromImages({ projectPath: '/project', expectedProjectId: 'project-1', images: [{ assetId: 'image-a', path: null }], invoke, }); expect(invoke).toHaveBeenCalledWith('create_ui_design_doc_from_images', { input: { projectPath: '/project', expectedProjectId: 'project-1', images: [{ assetId: 'image-a', path: null }], }, }); expect(result).toBe(created); }); });