feat: integrate learning module
This commit is contained in:
@@ -62,6 +62,21 @@ async function advancePoll() {
|
||||
});
|
||||
}
|
||||
|
||||
async function submitProjectMetadata() {
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
fireEvent.change(screen.getByLabelText(/发布者姓名/), { target: { value: '小明' } });
|
||||
fireEvent.change(screen.getByLabelText(/发布者年龄/), { target: { value: '12' } });
|
||||
fireEvent.change(screen.getByLabelText(/项目简介/), { target: { value: '这是一个太空清洁小游戏。' } });
|
||||
const cover = new File([new Uint8Array([1, 2, 3])], 'cover.png', { type: 'image/png' });
|
||||
fireEvent.change(screen.getByTestId('project-publish-cover'), { target: { files: [cover] } });
|
||||
fireEvent.click(screen.getByRole('button', { name: '提交审核' }));
|
||||
await act(async () => {
|
||||
await Promise.resolve();
|
||||
await Promise.resolve();
|
||||
await Promise.resolve();
|
||||
});
|
||||
}
|
||||
|
||||
describe('ProjectPublishAction', () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers();
|
||||
@@ -74,12 +89,12 @@ describe('ProjectPublishAction', () => {
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
it('submits automatic metadata and locks after Builder succeeds', async () => {
|
||||
it('submits user-entered metadata and cover, then locks after Builder succeeds', async () => {
|
||||
fetchCurrentWorksProjectStatusMock.mockResolvedValue(projectStatus('succeeded'));
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
expect(screen.getByRole('button', { name: '正在生成本次构建结果…' })).toBeDisabled();
|
||||
await submitProjectMetadata();
|
||||
expect(screen.getByRole('button', { name: '正在等待云端检查…' })).toBeDisabled();
|
||||
await flushSubmission();
|
||||
|
||||
expect(screen.getByTestId('project-publish-status')).toHaveTextContent(
|
||||
@@ -91,12 +106,20 @@ describe('ProjectPublishAction', () => {
|
||||
project: {
|
||||
app_id: 'makelore-prj-space-cleaner',
|
||||
title: 'space-cleaner',
|
||||
summary: 'space-cleaner,由 Makelore 创建的作品。',
|
||||
summary: '这是一个太空清洁小游戏。',
|
||||
description: null,
|
||||
cover_url: null,
|
||||
creator_name: '小明',
|
||||
creator_age: 12,
|
||||
category: 'mini_game',
|
||||
age_band: null,
|
||||
difficulty: null,
|
||||
},
|
||||
cover: expect.objectContaining({
|
||||
fileName: 'cover.png',
|
||||
mimeType: 'image/png',
|
||||
dataBase64: 'AQID',
|
||||
}),
|
||||
});
|
||||
expect(fetchCurrentWorksProjectStatusMock).not.toHaveBeenCalled();
|
||||
|
||||
@@ -115,7 +138,7 @@ describe('ProjectPublishAction', () => {
|
||||
);
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
await advancePoll();
|
||||
|
||||
@@ -134,7 +157,7 @@ describe('ProjectPublishAction', () => {
|
||||
);
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
await advancePoll();
|
||||
|
||||
@@ -157,7 +180,7 @@ describe('ProjectPublishAction', () => {
|
||||
fetchCurrentWorksProjectStatusMock.mockResolvedValue(projectStatus('succeeded'));
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
|
||||
expect(screen.getByTestId('project-publish-binding-warning')).toHaveTextContent(
|
||||
@@ -178,7 +201,7 @@ describe('ProjectPublishAction', () => {
|
||||
fetchCurrentWorksProjectStatusMock.mockResolvedValue(status);
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
await act(async () => {
|
||||
await vi.runAllTimersAsync();
|
||||
@@ -198,7 +221,7 @@ describe('ProjectPublishAction', () => {
|
||||
));
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
|
||||
const failure = screen.getByTestId('project-publish-failure');
|
||||
@@ -215,7 +238,7 @@ describe('ProjectPublishAction', () => {
|
||||
));
|
||||
render(<ProjectPublishAction project={project} projectType="mini_game" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
|
||||
const failure = screen.getByTestId('project-publish-failure');
|
||||
@@ -230,13 +253,15 @@ describe('ProjectPublishAction', () => {
|
||||
const longName = `作品-${'x'.repeat(250)}`;
|
||||
render(<ProjectPublishAction project={{ ...project, name: longName }} projectType="mini_program" />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '一键提交审核' }));
|
||||
await submitProjectMetadata();
|
||||
await flushSubmission();
|
||||
|
||||
const input = publishWorksProjectSourceMock.mock.calls[0]?.[0];
|
||||
expect(input.project.app_id).toBe('makelore-prj-space-cleaner');
|
||||
expect(input.project.title).toHaveLength(160);
|
||||
expect(input.project.summary).toBe(`${input.project.title},由 Makelore 创建的作品。`);
|
||||
expect(input.project.summary).toBe('这是一个太空清洁小游戏。');
|
||||
expect(input.project.creator_name).toBe('小明');
|
||||
expect(input.project.creator_age).toBe(12);
|
||||
expect(input.project.category).toBe('mini_program');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user