03a4410272
主要工作是共享同一套“画布内核与通用 UI 源码”,网站和 Tauri 只分别实现宿主适配层。 --------- Co-authored-by: 段舒康 <kdletters@qq.com> Co-authored-by: kdletters <kdletters@qq.com> Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/136 Co-authored-by: menghao <mh18530625731@163.com> Co-committed-by: menghao <mh18530625731@163.com>
55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
/** @vitest-environment jsdom */
|
|
import React from 'react';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { ResourceEditSurface } from '../src/view/project-development/ResourceEditSurface';
|
|
import { fireEvent, render, screen, waitFor } from './appSurface/harness';
|
|
|
|
describe('统一资源编辑面板', () => {
|
|
it('失败后锁定原请求字段并使用相同输入重试', async () => {
|
|
const submit = vi
|
|
.fn<(input: { prompt: string; assetName: string }) => Promise<void>>()
|
|
.mockRejectedValueOnce(new Error('网络暂不可用'))
|
|
.mockResolvedValueOnce(undefined);
|
|
render(
|
|
<ResourceEditSurface
|
|
resourceLabel="玩法规则.md"
|
|
editKind="text"
|
|
initialAssetName="玩法规则-编辑版"
|
|
semanticNotice={null}
|
|
onCancel={() => undefined}
|
|
onSubmit={submit}
|
|
/>,
|
|
);
|
|
|
|
const name = screen.getByLabelText('派生资源名称');
|
|
const prompt = screen.getByLabelText('编辑提示词');
|
|
fireEvent.change(name, { target: { value: '红发角色规则' } });
|
|
fireEvent.change(prompt, { target: { value: '把角色头发设定改为红色' } });
|
|
fireEvent.click(screen.getByRole('button', { name: '生成派生资源' }));
|
|
|
|
expect((await screen.findByRole('alert')).textContent).toContain(
|
|
'网络暂不可用',
|
|
);
|
|
expect((name as HTMLInputElement).disabled).toBe(true);
|
|
expect((prompt as HTMLTextAreaElement).disabled).toBe(true);
|
|
fireEvent.click(screen.getByRole('button', { name: '使用原请求重试' }));
|
|
await waitFor(() => expect(submit).toHaveBeenCalledTimes(2));
|
|
expect(submit.mock.calls[0]?.[0]).toEqual(submit.mock.calls[1]?.[0]);
|
|
});
|
|
|
|
it('对音频显示语义派生边界', () => {
|
|
render(
|
|
<ResourceEditSurface
|
|
resourceLabel="theme.ogg"
|
|
editKind="background-music"
|
|
initialAssetName="theme-编辑版"
|
|
semanticNotice="音频将基于原资源语义派生重制,不会修改原音频波形。"
|
|
onCancel={() => undefined}
|
|
onSubmit={async () => undefined}
|
|
/>,
|
|
);
|
|
expect(screen.getByText(/不会修改原音频波形/)).not.toBeNull();
|
|
});
|
|
});
|