import { describe, expect, it } from 'vitest'
import {
  buildTaskAgentOptions,
  taskAgentLabel,
} from '../src/utils/taskAgentOptions'

describe('live task assignee options', () => {
  it('combines only local assignment concepts with the live OpenClaw inventory', () => {
    const options = buildTaskAgentOptions([
      { id: 'iris', name: 'Iris' },
      { id: 'new-specialist', name: 'New Specialist' },
    ])

    expect(options).toEqual([
      { id: '', label: 'Nicht zugewiesen' },
      { id: 'bao', label: 'Bao' },
      { id: 'iris', label: 'Iris' },
      { id: 'new-specialist', label: 'New Specialist' },
    ])
    expect(options.some(option => option.id === 'programmer')).toBe(false)
  })

  it('preserves a persisted unknown assignee while OpenClaw is disconnected', () => {
    const options = buildTaskAgentOptions([], ['retired-agent'])

    expect(options).toContainEqual({
      id: 'retired-agent',
      label: 'retired-agent',
    })
    expect(taskAgentLabel('retired-agent', options)).toBe('retired-agent')
  })

  it('prefers the live display name for an already persisted agent id', () => {
    const options = buildTaskAgentOptions(
      [{ id: 'product-owner', name: 'Product Owner' }],
      ['product-owner'],
    )

    expect(taskAgentLabel('product-owner', options)).toBe('Product Owner')
    expect(options.filter(option => option.id === 'product-owner')).toHaveLength(1)
  })
})
