summaryrefslogtreecommitdiff
path: root/app_expo/services/api/api-problem.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app_expo/services/api/api-problem.test.ts')
-rw-r--r--app_expo/services/api/api-problem.test.ts100
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()
+})