import { describe, expect, it } from 'vitest'
import { render, screen } from '@testing-library/react'
import { FieldsProvider, useFieldsClient } from './provider.js'
import type { FieldsClient } from './client.js'

const mock = { getEntityValues: async () => ({}) } as unknown as FieldsClient
function Probe() {
  return <span>{typeof useFieldsClient().getEntityValues === 'function' ? 'ok' : 'no'}</span>
}

describe('FieldsProvider', () => {
  it('provides the injected client', () => {
    render(
      <FieldsProvider client={mock}>
        <Probe />
      </FieldsProvider>,
    )
    expect(screen.getByText('ok')).toBeTruthy()
  })
  it('useFieldsClient throws outside a provider', () => {
    expect(() => render(<Probe />)).toThrow()
  })
})
