import { describe, expect, it } from 'vitest'
import { createEmptyAssetGroupMap } from '@/lib/assets/grouping'
import { mapAssetGroupsToProjectAssetsData } from '@/lib/query/hooks/useProjectAssets'

describe('useProjectAssets adapters', () => {
  it('preserves profileData for unconfirmed character profiles', () => {
    const groups = createEmptyAssetGroupMap()
    groups.character.push({
      id: 'character-1',
      scope: 'project',
      kind: 'character',
      family: 'visual',
      name: '林夏',
      folderId: null,
      capabilities: {
        canGenerate: true,
        canSelectRender: true,
        canRevertRender: true,
        canModifyRender: true,
        canUploadRender: true,
        canBindVoice: true,
        canCopyFromGlobal: true,
      },
      taskRefs: [],
      taskState: {
        isRunning: false,
        lastError: null,
      },
      variants: [],
      introduction: '主角',
      profileData: JSON.stringify({ archetype: 'lead' }),
      profileConfirmed: false,
      profileTaskRefs: [],
      profileTaskState: {
        isRunning: false,
        lastError: null,
      },
      voice: {
        voiceType: null,
        voiceId: null,
        customVoiceUrl: null,
        media: null,
      },
    })

    const data = mapAssetGroupsToProjectAssetsData(groups)

    expect(data.characters).toHaveLength(1)
    expect(data.characters[0]).toEqual(expect.objectContaining({
      id: 'character-1',
      profileData: JSON.stringify({ archetype: 'lead' }),
      profileConfirmed: false,
    }))
  })
})
