import { describe, expect, it } from 'vitest'
import { getApiErrorMessage } from '../get-api-error-message'

describe('getApiErrorMessage', () => {
  it('returns server error message from response.data.error', () => {
    const error = {
      isAxiosError: true,
      response: { data: { error: 'Товар не найден' }, status: 404 },
    }
    expect(getApiErrorMessage(error)).toBe('Товар не найден')
  })

  it('returns network error message when no response', () => {
    const error = { isAxiosError: true, response: undefined }
    expect(getApiErrorMessage(error)).toBe('Нет соединения с сервером. Проверьте подключение к интернету.')
  })

  it('returns server error message for 5xx status', () => {
    const error = { isAxiosError: true, response: { data: {}, status: 500 } }
    expect(getApiErrorMessage(error)).toBe('Произошла ошибка. Попробуйте повторить позже.')
  })

  it('returns error message for Error instance', () => {
    expect(getApiErrorMessage(new Error('Something broke'))).toBe('Something broke')
  })

  it('returns null for falsy input (no error)', () => {
    expect(getApiErrorMessage(null)).toBeNull()
    expect(getApiErrorMessage(undefined)).toBeNull()
  })

  it('returns unknown error for random object', () => {
    expect(getApiErrorMessage({ foo: 'bar' })).toBe('Произошла неизвестная ошибка')
  })
})
