import { describe, expect, it } from 'vitest'
import { render, screen } from '@testing-library/react'
import { MenuProvider, useMenuClient } from './provider.js'
import type { MenuClient } from './client.js'

const mock = { listMenus: async () => [] } as unknown as MenuClient
function Probe() {
  return <span>{typeof useMenuClient().listMenus === 'function' ? 'ok' : 'no'}</span>
}

describe('MenuProvider', () => {
  it('provides the injected client', () => {
    render(
      <MenuProvider client={mock}>
        <Probe />
      </MenuProvider>,
    )
    expect(screen.getByText('ok')).toBeTruthy()
  })
  it('useMenuClient throws outside a provider', () => {
    expect(() => render(<Probe />)).toThrow('useMenuClient must be used within <MenuProvider>')
  })
})
