test.scripts/core/adapters/viewport.adapter.test.ts
test.scripts/core/adapters/viewport.adapter.test.ts is a file in Codebase Testing. 52 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { mkdirSync, mkdtempSync } from "node:fs";
import { builtRoutes } from "@project/scripts/core/loaders/viewport.loader.ts";
import { get } from "node:https";
import { join } from "node:path";
import { serveBuiltSite } from "@project/scripts/core/adapters/viewport.adapter.ts";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";
const builtSite = function builtSite(): string {
const root = mkdtempSync(join(tmpdir(), "viewport-"));
mkdirSync(join(root, "pag"));
writeVerbatim(join(root, "index.html"), "home");
writeVerbatim(join(root, "404.html"), "missing");
writeVerbatim(join(root, "pag", "keywords.html"), "keywords");
return root;
};
const statusOf = async function statusOf(url: string): Promise<{ status: number; body: string }> {
return new Promise((settle, fail) => {
get(url, { rejectUnauthorized: false }, (response) => {
let body = "";
response.setEncoding("utf8");
response.on("data", (chunk: string) => {
body += chunk;
});
response.on("end", () => {
settle({ body, status: response.statusCode ?? 0 });
});
}).on("error", fail);
});
};
describe("builtRoutes", () => {
it("lists every built page as a route and leaves the missing page out", () => {
expect(builtRoutes(builtSite())).toStrictEqual(["/", "/pag/keywords"]);
const absent = join(tmpdir(), "viewport-absent");
expect(builtRoutes(absent)).toStrictEqual([]);
});
});
describe("serveBuiltSite", () => {
it("serves a route from its page file and answers 404 outside the build", async () => {
const site = await serveBuiltSite(builtSite());
try {
await expect(statusOf(`${site.origin}/`)).resolves.toStrictEqual({ body: "home", status: 200 });
await expect(statusOf(`${site.origin}/pag/keywords`)).resolves.toStrictEqual({
body: "keywords",
status: 200,
});
await expect(statusOf(`${site.origin}/absent`)).resolves.toStrictEqual({ body: "", status: 404 });
} finally {
site.close();
}
});
});