import { describe, it, expect } from 'vitest' import { ApiRequestError, isApiError, isUnauthorized } from './errors' describe('ApiRequestError', () => { it('carries status and error payload, and uses the message as its own', () => { const err = new ApiRequestError(404, { code: 'not_found', message: 'Not found' }) expect(err).toBeInstanceOf(Error) expect(err.name).toBe('ApiRequestError') expect(err.status).toBe(404) expect(err.error).toEqual({ code: 'not_found', message: 'Not found' }) expect(err.message).toBe('Not found') }) }) describe('isApiError', () => { it('returns true for an ApiRequestError', () => { const err = new ApiRequestError(500, { code: 'server_error', message: 'Boom' }) expect(isApiError(err)).toBe(true) }) it('returns false for a plain Error', () => { expect(isApiError(new Error('plain'))).toBe(false) }) it('returns false for non-error values', () => { expect(isApiError('nope')).toBe(false) expect(isApiError(undefined)).toBe(false) expect(isApiError(null)).toBe(false) }) }) describe('isUnauthorized', () => { it('returns true for a 401 ApiRequestError', () => { const err = new ApiRequestError(401, { code: '401', message: 'Unauthorized' }) expect(isUnauthorized(err)).toBe(true) }) it('returns false for a non-401 ApiRequestError', () => { const err = new ApiRequestError(403, { code: '403', message: 'Forbidden' }) expect(isUnauthorized(err)).toBe(false) }) it('returns false for a non-ApiRequestError', () => { expect(isUnauthorized(new Error('plain'))).toBe(false) }) })