mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-15 02:53:25 +10:00
59 lines
1.5 KiB
TypeScript
59 lines
1.5 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { inspectPreflightPdf } from "./stylesheet-preflight-inspection";
|
|
|
|
const warning = {
|
|
code: "EXTREME_VALUE",
|
|
severity: "warning",
|
|
message: "The authored value is unusually large.",
|
|
range: {
|
|
start: { line: 1, column: 1, offset: 0 },
|
|
end: { line: 1, column: 10, offset: 9 },
|
|
},
|
|
} as const;
|
|
|
|
const rendered = {
|
|
ok: true as const,
|
|
bytes: new TextEncoder().encode("%PDF-1.7"),
|
|
diagnostics: [warning],
|
|
};
|
|
|
|
const limits = {
|
|
maxPages: 20,
|
|
maxBytes: 10_000_000,
|
|
maxPageWidthPt: 2_000,
|
|
maxPageHeightPt: 20_000,
|
|
maxPageAreaPt2: 20_000_000,
|
|
};
|
|
|
|
describe("stylesheet preflight PDF inspection", () => {
|
|
it("preserves compiler warnings and hides parser exceptions", async () => {
|
|
const destroy = vi.fn(async () => undefined);
|
|
|
|
const result = await inspectPreflightPdf(rendered, limits, () => ({
|
|
promise: Promise.reject(new Error("sensitive parser details")),
|
|
destroy,
|
|
}));
|
|
|
|
expect(result).toEqual({
|
|
ok: false,
|
|
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
|
message: "PDF inspection failed.",
|
|
diagnostics: [warning],
|
|
});
|
|
expect(destroy).toHaveBeenCalledOnce();
|
|
});
|
|
|
|
it("preserves compiler warnings when PDF.js fails before returning a loading task", async () => {
|
|
const result = await inspectPreflightPdf(rendered, limits, () => {
|
|
throw new Error("sensitive parser setup details");
|
|
});
|
|
|
|
expect(result).toEqual({
|
|
ok: false,
|
|
code: "STYLESHEET_PREFLIGHT_PARSE_FAILED",
|
|
message: "PDF inspection failed.",
|
|
diagnostics: [warning],
|
|
});
|
|
});
|
|
});
|