import { describe, expect, it } from 'vitest'
import { toUiGridColumns } from '../gridColumnAdapter'

describe('toUiGridColumns', () => {
  it('preserves the provider-neutral column semantics and formatter', () => {
    const formatter = (value: unknown) => String(value ?? '')

    expect(toUiGridColumns([{
      field: 'modelId',
      header: 'Model ID',
      width: 150,
      sortable: false,
      filterable: true,
      formatter,
    }])).toEqual([{
      field: 'modelId',
      header: 'Model ID',
      width: 150,
      sortable: false,
      filterable: true,
      formatter,
    }])
  })

  it('does not guess how string widths should be interpreted', () => {
    expect(toUiGridColumns([{ field: 'name', header: 'Name', width: '20rem' }])).toEqual([{
      field: 'name',
      header: 'Name',
      width: undefined,
      sortable: undefined,
      filterable: undefined,
      formatter: undefined,
    }])
  })

  it('rejects non-string fields before they reach an adapter', () => {
    expect(() => toUiGridColumns([{ field: 1, header: 'Invalid' }])).toThrow('Grid column field must be a string')
  })
})
