import { describe, expect, it } from 'vitest'
import { transformModelsDev } from './fetch-catalog.ts'

describe('transformModelsDev', () => {
  it('keeps known providers, drops unknown ones and costless models', () => {
    const out = transformModelsDev({
      anthropic: {
        name: 'Anthropic',
        models: {
          'claude-opus-4-7': {
            cost: { input: 15, output: 75, cache_read: 1.5 },
            modalities: { input: ['text', 'image'] },
          },
          'no-price': { modalities: { input: ['text'] } }, // dropped: no cost
        },
      },
      'some-unknown-provider': {
        name: 'Nope',
        models: { x: { cost: { input: 1, output: 1 } } },
      },
    })
    expect(out.length).toBe(1)
    const a = out[0]
    expect(a?.id).toBe('anthropic')
    expect(a?.models.length).toBe(1)
    expect(a?.models[0]?.id).toBe('claude-opus-4-7')
    expect(a?.models[0]?.cost.input).toBe(15)
    expect(a?.models[0]?.input).toEqual(['text', 'image'])
  })

  it('filters input modalities to the known set', () => {
    const out = transformModelsDev({
      openai: {
        name: 'OpenAI',
        models: {
          'gpt-x': { cost: { input: 1, output: 2 }, modalities: { input: ['text', 'weird'] } },
        },
      },
    })
    expect(out[0]?.models[0]?.input).toEqual(['text'])
  })

  it('returns empty for an all-unknown source', () => {
    expect(
      transformModelsDev({ foo: { models: { a: { cost: { input: 1, output: 1 } } } } }),
    ).toEqual([])
  })
})
