Files
RN_Template/RN_TEMPLATE/app/services/api/apiProblem.test.ts

74 lines
1.9 KiB
TypeScript
Raw Permalink Normal View History

2026-02-05 13:16:05 +08:00
import { ApiErrorResponse } from "apisauce"
import { getGeneralApiProblem } from "./apiProblem"
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()
})