import { expect, test } from "bun:test"; import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { checkReachability } from "../src/reachability.ts"; test("reports convention modules and workers that cannot be reached", () => { const root = mkdtempSync(join(tmpdir(), "wrn-reach-")); mkdirSync(join(root, "app", "middleware"), { recursive: true }); mkdirSync(join(root, "app", "queues"), { recursive: true }); writeFileSync(join(root, "app", "middleware", "audit.ts"), "export const audit = () => {};\n"); writeFileSync( join(root, "app", "queues", "mail.ts"), "export const mail = defineQueue({}); export const worker = defineWorker({});\n", ); expect( checkReachability(root) .map((issue) => issue.code) .sort(), ).toEqual(["WRN-REACH-MIDDLEWARE", "WRN-REACH-QUEUE", "WRN-REACH-WORKER"]); }); test("accepts discovered middleware and queues", () => { const root = mkdtempSync(join(tmpdir(), "wrn-reach-")); mkdirSync(join(root, "app", "middleware"), { recursive: true }); mkdirSync(join(root, "app", "queues"), { recursive: true }); writeFileSync(join(root, "app", "middleware", "audit.ts"), "export default () => {};\n"); writeFileSync(join(root, "app", "queues", "mail.ts"), "export default defineQueue({});\n"); expect(checkReachability(root)).toEqual([]); });