import { describe, expect, it } from 'vitest'
import { DEFAULT_ERROR_COPY, errorCopy } from './index.js'

describe('errorCopy', () => {
  it('returns the default copy for a known code', () => {
    expect(errorCopy(404)).toBe(DEFAULT_ERROR_COPY[404])
    expect(errorCopy(404).title).toBe('Page not found')
  })

  it('ALWAYS RESOLVES: an unknown code falls back to the 500 copy (never undefined)', () => {
    expect(errorCopy(418)).toBe(DEFAULT_ERROR_COPY[500])
    expect(errorCopy(0).title).toBe('Something went wrong')
  })

  it('a per-code override wins over the default', () => {
    const overrides = { 404: { title: 'Lost', message: 'gone' } }
    expect(errorCopy(404, overrides)).toEqual({ title: 'Lost', message: 'gone' })
  })

  it('an override for a different code does not shadow the requested code', () => {
    const overrides = { 403: { title: 'Nope', message: 'x' } }
    expect(errorCopy(404, overrides)).toBe(DEFAULT_ERROR_COPY[404])
  })

  it('covers at least 400/401/403/404/429/500/503', () => {
    for (const code of [400, 401, 403, 404, 429, 500, 503]) {
      expect(DEFAULT_ERROR_COPY[code]).toBeDefined()
    }
  })
})
