Initial Commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { readdirSync, readFileSync, statSync } from "node:fs";
|
||||
import { dirname, join } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { registerRateLimitServiceSlot } from "../src/services/registry-augmentation.js";
|
||||
|
||||
const here = dirname(fileURLToPath(import.meta.url));
|
||||
const pkgRoot = join(here, "..");
|
||||
const pkg = JSON.parse(readFileSync(join(pkgRoot, "package.json"), "utf8"));
|
||||
|
||||
describe("dep-graph", () => {
|
||||
it("ships ten subpath exports including the root", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
const exportKeys = Object.keys(pkg.exports).filter(
|
||||
(k: string) => k !== "./package.json"
|
||||
);
|
||||
expect(exportKeys.length).toBeGreaterThanOrEqual(10);
|
||||
});
|
||||
|
||||
it("declares the canonical runtime deps", { timeout: 5000 }, () => {
|
||||
const deps = pkg.dependencies as Record<string, string>;
|
||||
expect(deps["@suaveplan/api-plugin"]).toBe("workspace:^");
|
||||
expect(deps["@suaveplan/rate-limiter"]).toBe("workspace:^");
|
||||
expect(deps["@suaveplan/error"]).toBe("workspace:^");
|
||||
expect(deps["@suaveplan/types"]).toBe("workspace:^");
|
||||
expect(deps.hono).toBe("catalog:");
|
||||
expect(deps.zod).toBe("catalog:forms");
|
||||
});
|
||||
|
||||
function walk(dir: string, out: string[] = []): string[] {
|
||||
for (const entry of readdirSync(dir)) {
|
||||
const p = join(dir, entry);
|
||||
if (statSync(p).isDirectory()) walk(p, out);
|
||||
else if (
|
||||
entry.endsWith(".ts") &&
|
||||
!entry.endsWith(".test.ts") &&
|
||||
!entry.endsWith(".types.ts") &&
|
||||
entry !== "index.ts"
|
||||
)
|
||||
out.push(p);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
it("registerRateLimitServiceSlot is callable without throwing", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
expect(() => registerRateLimitServiceSlot()).not.toThrow();
|
||||
});
|
||||
|
||||
it("every implementation .ts has a sibling .md", { timeout: 5000 }, () => {
|
||||
const sources = walk(join(pkgRoot, "src"));
|
||||
const missing: string[] = [];
|
||||
for (const ts of sources) {
|
||||
const md = ts.replace(/\.ts$/, ".md");
|
||||
try {
|
||||
statSync(md);
|
||||
} catch {
|
||||
missing.push(md);
|
||||
}
|
||||
}
|
||||
expect(missing).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user