Add big fish settlement actions and publish feedback
This commit is contained in:
80
src/components/big-fish-runtime/BigFishRuntimeShell.test.tsx
Normal file
80
src/components/big-fish-runtime/BigFishRuntimeShell.test.tsx
Normal file
@@ -0,0 +1,80 @@
|
||||
// @vitest-environment jsdom
|
||||
|
||||
import { fireEvent, render, screen } from '@testing-library/react';
|
||||
import { describe, expect, test, vi } from 'vitest';
|
||||
|
||||
import type { BigFishRuntimeSnapshotResponse } from '../../../packages/shared/src/contracts/bigFish';
|
||||
import { BigFishRuntimeShell } from './BigFishRuntimeShell';
|
||||
|
||||
vi.mock('../ResolvedAssetImage', () => ({
|
||||
ResolvedAssetImage: ({
|
||||
src,
|
||||
alt,
|
||||
className,
|
||||
}: {
|
||||
src?: string | null;
|
||||
alt?: string;
|
||||
className?: string;
|
||||
}) => (src ? <img src={src} alt={alt} className={className} /> : null),
|
||||
}));
|
||||
|
||||
function createRun(
|
||||
status: BigFishRuntimeSnapshotResponse['status'],
|
||||
): BigFishRuntimeSnapshotResponse {
|
||||
return {
|
||||
runId: 'big-fish-run-1',
|
||||
sessionId: 'big-fish-session-1',
|
||||
status,
|
||||
tick: 18,
|
||||
playerLevel: 2,
|
||||
winLevel: 5,
|
||||
leaderEntityId: null,
|
||||
ownedEntities: [],
|
||||
wildEntities: [],
|
||||
cameraCenter: { x: 0, y: 0 },
|
||||
lastInput: { x: 0, y: 0 },
|
||||
eventLog: ['己方鱼群已经耗尽'],
|
||||
updatedAt: '2026-04-26T12:00:00.000Z',
|
||||
};
|
||||
}
|
||||
|
||||
describe('BigFishRuntimeShell', () => {
|
||||
test('renders restart and exit actions after a failed run', () => {
|
||||
const onBack = vi.fn();
|
||||
const onRestart = vi.fn();
|
||||
|
||||
render(
|
||||
<BigFishRuntimeShell
|
||||
run={createRun('failed')}
|
||||
onBack={onBack}
|
||||
onRestart={onRestart}
|
||||
onSubmitInput={() => {}}
|
||||
/>,
|
||||
);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '重来' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: '退出' }));
|
||||
|
||||
expect(screen.getByText('本轮失败')).toBeTruthy();
|
||||
expect(onRestart).toHaveBeenCalledTimes(1);
|
||||
expect(onBack).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test('keeps an exit action after a won run', () => {
|
||||
const onBack = vi.fn();
|
||||
|
||||
render(
|
||||
<BigFishRuntimeShell
|
||||
run={createRun('won')}
|
||||
onBack={onBack}
|
||||
onSubmitInput={() => {}}
|
||||
/>,
|
||||
);
|
||||
|
||||
expect(screen.getByText('通关完成')).toBeTruthy();
|
||||
expect(screen.queryByRole('button', { name: '重来' })).toBeNull();
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: '退出' }));
|
||||
expect(onBack).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user