From d5f59f9a4a0fbef7e15dc66f55d3432973366339 Mon Sep 17 00:00:00 2001 From: zetaloop Date: Sat, 28 Feb 2026 07:26:34 +0800 Subject: [PATCH] test: cover error model and unauth order create --- tests/errors.test.ts | 29 +++++++++++++++++++++++++++++ tests/orders-api.test.ts | 22 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/errors.test.ts create mode 100644 tests/orders-api.test.ts diff --git a/tests/errors.test.ts b/tests/errors.test.ts new file mode 100644 index 0000000..284d001 --- /dev/null +++ b/tests/errors.test.ts @@ -0,0 +1,29 @@ +import { isApiError, toApiError } from "@/lib/errors" +import { describe, expect, it } from "vitest" + +describe("lib/errors", () => { + describe("toApiError", () => { + it("passes through {code,msg} ApiError", () => { + const err = { code: 400, msg: "bad request" } + expect(isApiError(err)).toBe(true) + + try { + throw err + } catch (e) { + expect(toApiError(e)).toBe(err) + } + }) + + it("converts Error to safe {code,msg}", () => { + expect(toApiError(new Error("x"))).toEqual({ code: 500, msg: "x" }) + }) + + it("converts string to safe {code,msg}", () => { + expect(toApiError("x")).toEqual({ code: 500, msg: "x" }) + }) + + it("converts unknown input to safe {code,msg}", () => { + expect(toApiError(null)).toEqual({ code: 500, msg: "Unknown error" }) + }) + }) +}) diff --git a/tests/orders-api.test.ts b/tests/orders-api.test.ts new file mode 100644 index 0000000..b74652b --- /dev/null +++ b/tests/orders-api.test.ts @@ -0,0 +1,22 @@ +import { createPaidOrder } from "@/lib/api/orders" +import { useAuthStore } from "@/store/auth" +import { describe, expect, it } from "vitest" + +describe("lib/api/orders", () => { + it("returns { decision: { ok:false, error:{code,msg} } } when unauthenticated", () => { + useAuthStore.getState().logout() + + const res = createPaidOrder({ + playerId: "1005", + serviceId: "5001", + quantity: 1, + }) + + expect(res).toEqual({ + decision: { + ok: false, + error: { code: 401, msg: "请先登录" }, + }, + }) + }) +})