From bd0c669031e465c4d4bdeaa5fbaf55239ad774d6 Mon Sep 17 00:00:00 2001 From: xgcing <894987633@qq.com> Date: Thu, 18 Jun 2026 11:49:57 +0800 Subject: [PATCH 1/3] test: await ky create route response --- tests/routes/things/create.test.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tests/routes/things/create.test.ts b/tests/routes/things/create.test.ts index 65e9935..f30bc31 100644 --- a/tests/routes/things/create.test.ts +++ b/tests/routes/things/create.test.ts @@ -3,17 +3,24 @@ import { test, expect } from "bun:test" test("create a thing", async () => { const { ky } = await getTestServer() + const thing = { + name: "Thing1", + description: "Thing1 Description", + } - ky.post("things/create", { - json: { - name: "Thing1", - description: "Thing1 Description", - }, - }) + const createData = await ky + .post("things/create", { + json: thing, + }) + .json<{ ok: boolean }>() + + expect(createData).toEqual({ ok: true }) const data = await ky .get("things/list") .json<{ things: { name: string; description: string }[] }>() expect(data.things).toHaveLength(1) + expect(data.things[0]?.name).toBe(thing.name) + expect(data.things[0]?.description).toBe(thing.description) }) From 1f2c7c4eb6064408325919ea12d3509976034e9e Mon Sep 17 00:00:00 2001 From: xgcing <894987633@qq.com> Date: Wed, 24 Jun 2026 18:08:34 +0800 Subject: [PATCH 2/3] test: cover ky list and delete routes --- tests/routes/things/delete.test.ts | 49 ++++++++++++++++++++++++++++++ tests/routes/things/list.test.ts | 48 +++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 tests/routes/things/delete.test.ts create mode 100644 tests/routes/things/list.test.ts diff --git a/tests/routes/things/delete.test.ts b/tests/routes/things/delete.test.ts new file mode 100644 index 0000000..028c63f --- /dev/null +++ b/tests/routes/things/delete.test.ts @@ -0,0 +1,49 @@ +import { expect, test } from "bun:test" +import { getTestServer } from "tests/fixtures/get-test-server" + +test("delete a thing by id and ignore missing ids", async () => { + const { ky } = await getTestServer() + + await ky + .post("things/create", { + json: { + name: "Thing1", + description: "Thing1 Description", + }, + }) + .json<{ ok: boolean }>() + + const beforeDelete = await ky + .get("things/list") + .json<{ + things: { thing_id: string; name: string; description: string }[] + }>() + + expect(beforeDelete.things).toHaveLength(1) + + const deleteData = await ky + .post("things/delete", { + body: new URLSearchParams({ + thing_id: beforeDelete.things[0]!.thing_id, + }), + }) + .json<{ ok: boolean }>() + + expect(deleteData).toEqual({ ok: true }) + + const afterDelete = await ky.get("things/list").json<{ things: unknown[] }>() + expect(afterDelete.things).toHaveLength(0) + + const missingDeleteData = await ky + .post("things/delete", { + body: new URLSearchParams({ + thing_id: "missing", + }), + }) + .json<{ ok: boolean }>() + + expect(missingDeleteData).toEqual({ ok: true }) + + const data = await ky.get("things/list").json<{ things: unknown[] }>() + expect(data.things).toHaveLength(0) +}) diff --git a/tests/routes/things/list.test.ts b/tests/routes/things/list.test.ts new file mode 100644 index 0000000..b415591 --- /dev/null +++ b/tests/routes/things/list.test.ts @@ -0,0 +1,48 @@ +import { expect, test } from "bun:test" +import { getTestServer } from "tests/fixtures/get-test-server" + +test("list starts empty and returns created things in insertion order", async () => { + const { ky } = await getTestServer() + + const emptyData = await ky.get("things/list").json<{ things: unknown[] }>() + + expect(emptyData.things).toEqual([]) + + const things = [ + { + name: "Thing1", + description: "Thing1 Description", + }, + { + name: "Thing2", + description: "Thing2 Description", + }, + ] + + for (const thing of things) { + const createData = await ky + .post("things/create", { + json: thing, + }) + .json<{ ok: boolean }>() + + expect(createData).toEqual({ ok: true }) + } + + const data = await ky + .get("things/list") + .json<{ + things: { thing_id: string; name: string; description: string }[] + }>() + + expect(data.things).toEqual([ + { + thing_id: "0", + ...things[0], + }, + { + thing_id: "1", + ...things[1], + }, + ]) +}) From a2ecb144e920eac6076ac2f5fe1ced1622b8f16f Mon Sep 17 00:00:00 2001 From: xgcing <894987633@qq.com> Date: Wed, 24 Jun 2026 18:11:12 +0800 Subject: [PATCH 3/3] style: format ky route tests --- tests/routes/things/delete.test.ts | 8 +++----- tests/routes/things/list.test.ts | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/tests/routes/things/delete.test.ts b/tests/routes/things/delete.test.ts index 028c63f..d7056e2 100644 --- a/tests/routes/things/delete.test.ts +++ b/tests/routes/things/delete.test.ts @@ -13,11 +13,9 @@ test("delete a thing by id and ignore missing ids", async () => { }) .json<{ ok: boolean }>() - const beforeDelete = await ky - .get("things/list") - .json<{ - things: { thing_id: string; name: string; description: string }[] - }>() + const beforeDelete = await ky.get("things/list").json<{ + things: { thing_id: string; name: string; description: string }[] + }>() expect(beforeDelete.things).toHaveLength(1) diff --git a/tests/routes/things/list.test.ts b/tests/routes/things/list.test.ts index b415591..66f1366 100644 --- a/tests/routes/things/list.test.ts +++ b/tests/routes/things/list.test.ts @@ -29,11 +29,9 @@ test("list starts empty and returns created things in insertion order", async () expect(createData).toEqual({ ok: true }) } - const data = await ky - .get("things/list") - .json<{ - things: { thing_id: string; name: string; description: string }[] - }>() + const data = await ky.get("things/list").json<{ + things: { thing_id: string; name: string; description: string }[] + }>() expect(data.things).toEqual([ {