feat: add wooden fish play template

This commit is contained in:
2026-05-21 23:34:07 +08:00
parent ef09a23c35
commit 5b0f9f3763
121 changed files with 11580 additions and 159 deletions

View File

@@ -0,0 +1,64 @@
/* @vitest-environment jsdom */
import { fireEvent, render, screen } from '@testing-library/react';
import { expect, test, vi } from 'vitest';
import type { CreationEntryConfig } from '../../services/creationEntryConfigService';
import { PlatformEntryCreationTypeModal } from './PlatformEntryCreationTypeModal';
import { derivePlatformCreationTypes } from './platformEntryCreationTypes';
const entryConfig = {
startCard: {
title: '新建作品',
description: '',
idleBadge: '模板',
busyBadge: '开启中',
},
typeModal: {
title: '选择创作类型',
description: '',
},
creationTypes: [
{
id: 'wooden-fish',
title: '敲木鱼',
subtitle: '轻点积累功德',
badge: '可创建',
imageSrc: '/creation-type-references/puzzle.webp',
visible: true,
open: true,
sortOrder: 10,
updatedAtMicros: 1,
},
],
} satisfies CreationEntryConfig;
test('dispatches wooden fish creation type selection', () => {
const onSelectWoodenFish = vi.fn();
render(
<PlatformEntryCreationTypeModal
isOpen
isBusy={false}
error={null}
entryConfig={entryConfig}
creationTypes={derivePlatformCreationTypes(entryConfig.creationTypes)}
onClose={() => {}}
onSelectRpg={() => {}}
onSelectBigFish={() => {}}
onSelectMatch3D={() => {}}
onSelectSquareHole={() => {}}
onSelectJumpHop={() => {}}
onSelectWoodenFish={onSelectWoodenFish}
onSelectPuzzle={() => {}}
onSelectCreativeAgent={() => {}}
onSelectBarkBattle={() => {}}
onSelectVisualNovel={() => {}}
onSelectBabyObjectMatch={() => {}}
/>,
);
fireEvent.click(screen.getByRole('button', { name: //u }));
expect(onSelectWoodenFish).toHaveBeenCalledTimes(1);
});

View File

@@ -19,6 +19,7 @@ export interface PlatformEntryCreationTypeModalProps {
onSelectMatch3D: () => void;
onSelectSquareHole: () => void;
onSelectJumpHop: () => void;
onSelectWoodenFish: () => void;
onSelectPuzzle: () => void;
onSelectCreativeAgent: () => void;
onSelectBarkBattle: () => void;
@@ -102,6 +103,7 @@ export function PlatformEntryCreationTypeModal({
onSelectMatch3D,
onSelectSquareHole,
onSelectJumpHop,
onSelectWoodenFish,
onSelectPuzzle,
onSelectCreativeAgent,
onSelectBarkBattle,
@@ -147,6 +149,9 @@ export function PlatformEntryCreationTypeModal({
if (item.id === 'jump-hop') {
onSelectJumpHop();
}
if (item.id === 'wooden-fish') {
onSelectWoodenFish();
}
if (item.id === 'puzzle') {
onSelectPuzzle();
}

File diff suppressed because it is too large Load Diff

View File

@@ -36,6 +36,10 @@ export type SelectionStage =
| 'jump-hop-result'
| 'jump-hop-runtime'
| 'jump-hop-gallery-detail'
| 'wooden-fish-workspace'
| 'wooden-fish-generating'
| 'wooden-fish-result'
| 'wooden-fish-runtime'
| 'bark-battle-runtime'
| 'creative-agent-workspace'
| 'visual-novel-agent-workspace'