137fd58fce
- 引入 UI 设计图片和精灵素材批处理准备功能 - 新增界面图和组件前置条件校验逻辑 - 添加与 SpriteBorder 相关的验证和字段编辑组件 - 支持 UI 状态管理,包括设计图和精灵素材的增删改功能
54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
// @vitest-environment jsdom
|
|
|
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
import { createElement, type ReactNode } from 'react';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
vi.mock('../src/components/AssetImporter', () => ({
|
|
AssetImporter: ({ open }: { open: boolean }) =>
|
|
open ? createElement('div', { role: 'dialog' }, '素材导入器') : null,
|
|
}));
|
|
|
|
vi.mock('../src/components/modal/ThemedModal', () => ({
|
|
ThemedModal: ({
|
|
open,
|
|
children,
|
|
}: {
|
|
open: boolean;
|
|
children: ReactNode;
|
|
}) => (open ? createElement('div', { role: 'dialog' }, children) : null),
|
|
}));
|
|
|
|
import UiEditorPage from '../src/view/ui-editor';
|
|
|
|
describe('UiEditorPage', () => {
|
|
it('renders split input tools over a real empty State', () => {
|
|
render(createElement(UiEditorPage, { projectPath: '/tmp/ui-editor' }));
|
|
|
|
expect(screen.getByRole('navigation', { name: 'UI 编辑工具' })).toBeTruthy();
|
|
expect(screen.getByRole('button', { name: '导入界面图' })).toBeTruthy();
|
|
expect(screen.getByRole('button', { name: '导入独立素材' })).toBeTruthy();
|
|
expect(screen.getByText('从界面图开始')).toBeTruthy();
|
|
expect(screen.queryByText('Pause Dialog')).toBeNull();
|
|
});
|
|
|
|
it('switches tools freely without inventing completed workflow state', () => {
|
|
render(createElement(UiEditorPage, { projectPath: '/tmp/ui-editor' }));
|
|
|
|
fireEvent.click(screen.getByRole('button', { name: /布局验收/ }));
|
|
expect(screen.getByRole('heading', { name: '布局验收' })).toBeTruthy();
|
|
expect(screen.getByText('当前界面尚无组件树。')).toBeTruthy();
|
|
|
|
fireEvent.click(screen.getByRole('button', { name: '检查前置数据' }));
|
|
expect(screen.getByText('还不能执行此操作')).toBeTruthy();
|
|
expect(screen.getByText('请先导入界面图')).toBeTruthy();
|
|
});
|
|
|
|
it('opens the design-image importer independently', () => {
|
|
render(createElement(UiEditorPage, { projectPath: '/tmp/ui-editor' }));
|
|
|
|
fireEvent.click(screen.getByRole('button', { name: '导入界面图' }));
|
|
expect(screen.getByText('素材导入器')).toBeTruthy();
|
|
});
|
|
});
|