/*! * @license * Copyright Squiz Australia Pty Ltd. All Rights Reserved. */ import { AxiosError } from 'axios'; import { handleError, isAxiosError } from './errorUtils'; describe('errorUtils', () => { describe('isAxiosError', () => { it('should return true for axios errors', () => { const axiosError = new AxiosError('Test error'); expect(isAxiosError(axiosError)).toBe(true); }); it('should return false for non-axios errors', () => { const regularError = new Error('Regular error'); expect(isAxiosError(regularError)).toBe(false); }); it('should return false for null/undefined', () => { expect(isAxiosError(null)).toBe(false); expect(isAxiosError(undefined)).toBe(false); }); }); describe('handleError', () => { it('should handle axios errors with response data message', () => { const axiosError = new AxiosError('Request failed'); axiosError.response = { status: 500, data: { message: 'Internal server error' }, } as any; const result = handleError(axiosError); expect(result.message).toBe('Unexpected response code 500. Internal server error'); }); it('should handle axios errors without response data message', () => { const axiosError = new AxiosError('Network error'); axiosError.response = { status: 404, data: {}, } as any; const result = handleError(axiosError); expect(result.message).toBe('Network error (code: 404)'); }); it('should handle axios errors without response', () => { const axiosError = new AxiosError('Connection timeout'); const result = handleError(axiosError); expect(result.message).toBe('Connection timeout (code: unknown)'); }); it('should handle non-axios errors', () => { const regularError = new Error('Regular error'); const result = handleError(regularError); expect(result.message).toBe('Regular error'); }); it('should handle errors without message', () => { const errorWithoutMessage = {}; const result = handleError(errorWithoutMessage); expect(result.message).toBe('An error has occurred'); }); }); });