import { renderToStaticMarkup } from 'react-dom/server';
import { expect, test } from 'vitest';

import { CustomWorldCreationHub } from './CustomWorldCreationHub';

const noopCreateType = () => {};

test('creation hub draft card renders compiled work summary fields', () => {
  const html = renderToStaticMarkup(
    <CustomWorldCreationHub
      items={[
        {
          workId: 'draft:session-1',
          sourceType: 'agent_session',
          status: 'draft',
          title: '一个被潮雾切开的列岛世界',
          subtitle: '补齐关键锚点',
          summary:
            '玩家是失职返乡的守灯人 · 核心冲突：守灯会与沉船商盟争夺航道解释权',
          coverImageSrc: null,
          updatedAt: new Date('2026-04-13T12:00:00.000Z').toISOString(),
          publishedAt: null,
          stage: 'clarifying',
          stageLabel: '补齐关键锚点',
          playableNpcCount: 0,
          landmarkCount: 0,
          sessionId: 'session-1',
          profileId: null,
          canResume: true,
          canEnterWorld: false,
        },
      ]}
      loading={false}
      error={null}
      onRetry={() => {}}
      onCreateType={noopCreateType}
      onOpenDraft={() => {}}
      onEnterPublished={() => {}}
    />,
  );

  expect(html).toContain('一个被潮雾切开的列岛世界');
  expect(html).toContain('玩家是失职返乡的守灯人');
  expect(html).toContain('守灯会与沉船商盟争夺航道解释权');
  expect(html).toContain('角色扮演 RPG');
  expect(html).toContain('大鱼吃小鱼');
  expect(html).toContain('拼图玩法');
});

test('creation hub renders puzzle works in the same unified list with puzzle tag', () => {
  const html = renderToStaticMarkup(
    <CustomWorldCreationHub
      items={[]}
      puzzleItems={[
        {
          workId: 'puzzle:work-1',
          profileId: 'puzzle-profile-1',
          ownerUserId: 'user-1',
          authorDisplayName: '测试作者',
          levelName: '潮雾拼图',
          summary: '一张被切成拼图的潮雾港口主视觉。',
          themeTags: ['潮雾', '港口'],
          coverImageSrc: null,
          publicationStatus: 'published',
          updatedAt: new Date('2026-04-22T10:00:00.000Z').toISOString(),
          publishedAt: new Date('2026-04-22T10:05:00.000Z').toISOString(),
          playCount: 12,
          publishReady: true,
        },
      ]}
      loading={false}
      error={null}
      onRetry={() => {}}
      onCreateType={noopCreateType}
      onOpenDraft={() => {}}
      onEnterPublished={() => {}}
      onOpenPuzzleDetail={() => {}}
    />,
  );

  expect(html).toContain('潮雾拼图');
  expect(html).toContain('拼图');
  expect(html).not.toContain('我的拼图作品');
});
