/* @vitest-environment jsdom */
import { render, screen, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, test, vi } from 'vitest';
import { PlatformProfilePlayedWorksModal } from './PlatformProfilePlayedWorksModal';
describe('PlatformProfilePlayedWorksModal', () => {
test('renders save archives and played works in one modal', async () => {
const user = userEvent.setup();
const onResumeSave = vi.fn();
const onOpenWork = vi.fn();
const saveEntry = {
worldKey: 'custom:save-1',
ownerUserId: 'user-1',
profileId: 'save-1',
worldType: 'custom',
worldName: '回声群岛',
subtitle: '雾海码头',
summaryText: '继续推进上一次保存的故事。',
coverImageSrc: null,
lastPlayedAt: '2026-04-19T12:00:00.000Z',
};
const playedWork = {
worldKey: 'custom:world-1',
ownerUserId: 'user-1',
profileId: 'world-1',
worldType: 'CUSTOM',
worldTitle: '潮雾列岛',
worldSubtitle: '旧灯塔与失控航路',
firstPlayedAt: '2026-04-18T12:00:00.000Z',
lastPlayedAt: '2026-04-19T12:00:00.000Z',
lastObservedPlayTimeMs: 30 * 60 * 1000,
};
render(
,
);
const dialog = screen.getByRole('dialog', { name: '玩过' });
expect(within(dialog).getByText('可继续')).toBeTruthy();
expect(within(dialog).getAllByText('玩过').length).toBeGreaterThan(0);
expect(within(dialog).getByText('1.5小时')).toBeTruthy();
await user.click(within(dialog).getByRole('button', { name: /回声群岛/u }));
expect(onResumeSave).toHaveBeenCalledWith(saveEntry);
await user.click(within(dialog).getByRole('button', { name: /潮雾列岛/u }));
expect(onOpenWork).toHaveBeenCalledWith(playedWork);
});
test('renders platform empty state when no history exists', () => {
render(
,
);
const emptyState = screen.getByText('暂无玩过');
expect(emptyState.className).toContain('platform-empty-state');
expect(emptyState.className).toContain('text-left');
});
});