import { getGeneralApiProblem } from "./api-problem" import { ApiErrorResponse } from "apisauce" test("handles connection errors", () => { expect(getGeneralApiProblem({ problem: "CONNECTION_ERROR" } as ApiErrorResponse)).toEqual({ kind: "cannot-connect", temporary: true, }) }) test("handles network errors", () => { expect(getGeneralApiProblem({ problem: "NETWORK_ERROR" } as ApiErrorResponse)).toEqual({ kind: "cannot-connect", temporary: true, }) }) test("handles timeouts", () => { expect(getGeneralApiProblem({ problem: "TIMEOUT_ERROR" } as ApiErrorResponse)).toEqual({ kind: "timeout", temporary: true, }) }) test("handles server errors", () => { expect(getGeneralApiProblem({ problem: "SERVER_ERROR" } as ApiErrorResponse)).toEqual({ kind: "server", }) }) test("handles unknown errors", () => { expect(getGeneralApiProblem({ problem: "UNKNOWN_ERROR" } as ApiErrorResponse)).toEqual({ kind: "unknown", temporary: true, }) }) test("handles unauthorized errors", () => { expect( getGeneralApiProblem({ problem: "CLIENT_ERROR", status: 401 } as ApiErrorResponse), ).toEqual({ kind: "unauthorized", }) }) test("handles forbidden errors", () => { expect( getGeneralApiProblem({ problem: "CLIENT_ERROR", status: 403 } as ApiErrorResponse), ).toEqual({ kind: "forbidden", }) }) test("handles not-found errors", () => { expect( getGeneralApiProblem({ problem: "CLIENT_ERROR", status: 404 } as ApiErrorResponse), ).toEqual({ kind: "not-found", }) }) test("handles other client errors", () => { expect( getGeneralApiProblem({ problem: "CLIENT_ERROR", status: 418 } as ApiErrorResponse), ).toEqual({ kind: "rejected", }) }) test("handles cancellation errors", () => { expect(getGeneralApiProblem({ problem: "CANCEL_ERROR" } as ApiErrorResponse)).toBeNull() })