// Tests for basic/routes.ts // These tests verify the route structure and exports import assert from "node:assert/strict"; import { describe, it } from "node:test"; import { routes } from "./routes"; describe("basic/routes", () => { describe("routes object", () => { it("exports routes as an object", () => { assert.equal(typeof routes, "object"); }); it("contains hello route", () => { assert.ok("hello" in routes); assert.equal(routes.hello.path, "/hello"); assert.ok(routes.hello.methods.includes("GET")); }); it("contains home route", () => { assert.ok("home" in routes); assert.equal(routes.home.path, "/"); assert.ok(routes.home.methods.includes("GET")); }); it("contains login route", () => { assert.ok("login" in routes); assert.equal(routes.login.path, "/login"); }); it("contains logout route", () => { assert.ok("logout" in routes); assert.equal(routes.logout.path, "/logout"); }); it("all routes have handlers", () => { for (const [name, route] of Object.entries(routes)) { assert.equal( typeof route.handler, "function", `Route ${name} should have a handler function`, ); } }); it("all routes have methods array", () => { for (const [name, route] of Object.entries(routes)) { assert.ok( Array.isArray(route.methods), `Route ${name} should have methods array`, ); assert.ok( route.methods.length > 0, `Route ${name} should have at least one method`, ); } }); it("all routes have path string", () => { for (const [name, route] of Object.entries(routes)) { assert.equal( typeof route.path, "string", `Route ${name} should have a path string`, ); assert.ok( route.path.startsWith("/"), `Route ${name} path should start with /`, ); } }); }); });