import { describe, expect, it } from "vitest"; import { fitBody } from "../src/lib/resume-pdf.ts"; import type { ResumeData } from "../src/lib/resume.ts"; const role = (n: number) => ({ path: `Resume/Role ${n}.md`, title: `Role ${n}`, data: { type: "experience", title: `Role ${n}`, publish: true, company: "Example Co", role: `Role ${n}`, start: "2019-03", bullets: ["Built a thing that did something useful for people every day.", "Led a small team."] }, }) as unknown as ResumeData["roles"][number]; const base: ResumeData = { name: "Greg Kilmer", headline: "Team Lead", summary: "A short summary.", stats: [], roles: [role(1)], earlier: [], projects: [], socials: [], updated: "2026-10-12", }; describe("resume PDF fit", () => { it("opens a short resume up to fill its one page", async () => { const medium = { ...base, roles: Array.from({ length: 6 }, (_, i) => role(i)) }; const fitted = await fitBody(medium); expect(fitted.pages).toBe(1); expect(fitted.end).toBeLessThanOrEqual(792 - 70); // At normal spacing six short roles end well above the middle of the page. expect(fitted.end).toBeGreaterThan(560); }); it("leaves a resume that runs past one page alone", async () => { const long = await fitBody({ ...base, roles: Array.from({ length: 12 }, (_, i) => role(i)) }); expect(long.pages).toBeGreaterThan(1); }); });