fix: resolve type errors across test suite

This commit is contained in:
2026-02-26 12:49:04 -06:00
parent 827b018f25
commit 51eb36f4a6
26 changed files with 2847 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
import { describe, test, expect } from "bun:test";
import { Hono } from "hono";
/**
* Tests for the router aggregation pattern used throughout the app.
* Each router imports route modules and mounts them.
*/
describe("Router pattern", () => {
test("mounting multiple routes via Object.values pattern", () => {
// Simulate the pattern used in companyRouter.ts
const route1 = new Hono().get("/items", (c) => c.json({ route: "items" }));
const route2 = new Hono().get("/count", (c) => c.json({ route: "count" }));
const routes = { route1, route2 };
const router = new Hono();
Object.values(routes).map((r) => router.route("/", r));
// Mount router under a prefix
const app = new Hono();
app.route("/v1/resource", router);
return Promise.all([
(async () => {
const res = await app.request("/v1/resource/items");
expect(res.status).toBe(200);
const body: any = await res.json();
expect(body.route).toBe("items");
})(),
(async () => {
const res = await app.request("/v1/resource/count");
expect(res.status).toBe(200);
const body: any = await res.json();
expect(body.route).toBe("count");
})(),
]);
});
test("nested route parameters work correctly", async () => {
const route = new Hono().get("/items/:id", (c) =>
c.json({ id: c.req.param("id") }),
);
const router = new Hono();
router.route("/", route);
const app = new Hono();
app.route("/v1/test", router);
const res = await app.request("/v1/test/items/abc-123");
expect(res.status).toBe(200);
const body: any = await res.json();
expect(body.id).toBe("abc-123");
});
test("error propagation through router chain", async () => {
const route = new Hono().get("/fail", () => {
throw new Error("Boom!");
});
const router = new Hono();
router.route("/", route);
const app = new Hono();
app.onError((err, c) => c.json({ error: err.message, caught: true }, 500));
app.route("/v1", router);
const res = await app.request("/v1/fail");
expect(res.status).toBe(500);
const body: any = await res.json();
expect(body.caught).toBe(true);
expect(body.error).toBe("Boom!");
});
});