diff options
Diffstat (limited to 'app_expo/services/api/api-problem.test.ts')
-rw-r--r-- | app_expo/services/api/api-problem.test.ts | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/app_expo/services/api/api-problem.test.ts b/app_expo/services/api/api-problem.test.ts new file mode 100644 index 0000000..f8b4041 --- /dev/null +++ b/app_expo/services/api/api-problem.test.ts @@ -0,0 +1,100 @@ +import { getGeneralApiProblem } from './api-problem' +import { ApiErrorResponse } from 'apisauce' + +test('handles connection errors', () => { + expect( + getGeneralApiProblem({ + problem: 'CONNECTION_ERROR', + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'cannot-connect', + temporary: true, + }) +}) + +test('handles network errors', () => { + expect( + getGeneralApiProblem({ + problem: 'NETWORK_ERROR', + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'cannot-connect', + temporary: true, + }) +}) + +test('handles timeouts', () => { + expect( + getGeneralApiProblem({ + problem: 'TIMEOUT_ERROR', + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'timeout', + temporary: true, + }) +}) + +test('handles server errors', () => { + expect(getGeneralApiProblem({ problem: 'SERVER_ERROR' } as ApiErrorResponse<null>)).toEqual({ + kind: 'server', + }) +}) + +test('handles unknown errors', () => { + expect( + getGeneralApiProblem({ + problem: 'UNKNOWN_ERROR', + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'unknown', + temporary: true, + }) +}) + +test('handles unauthorized errors', () => { + expect( + getGeneralApiProblem({ + problem: 'CLIENT_ERROR', + status: 401, + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'unauthorized', + }) +}) + +test('handles forbidden errors', () => { + expect( + getGeneralApiProblem({ + problem: 'CLIENT_ERROR', + status: 403, + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'forbidden', + }) +}) + +test('handles not-found errors', () => { + expect( + getGeneralApiProblem({ + problem: 'CLIENT_ERROR', + status: 404, + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'not-found', + }) +}) + +test('handles other client errors', () => { + expect( + getGeneralApiProblem({ + problem: 'CLIENT_ERROR', + status: 418, + } as ApiErrorResponse<null>), + ).toEqual({ + kind: 'rejected', + }) +}) + +test('handles cancellation errors', () => { + expect(getGeneralApiProblem({ problem: 'CANCEL_ERROR' } as ApiErrorResponse<null>)).toBeNull() +}) |