Files
zemion d3e43bea98
Verify / verify (push) Canceled after 0s
Release Label Tools 0.2.0
2026-09-02 11:52:44 +02:00

40 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
defaultTemplate,
exportTemplate,
importTemplate,
mergeContent,
validateTemplate,
} from "../../src/labels/template";
describe("label template model", () => {
it("round-trips a bounded reusable template", () => {
const template = defaultTemplate(63.5, 33.9);
expect(importTemplate(exportTemplate(template))).toEqual(template);
expect(mergeContent("{{name}} / {{missing}}", { name: "Ada" })).toBe(
"Ada / ",
);
});
it("reports quiet zones and rejects out-of-bounds elements", () => {
const template = defaultTemplate(40, 20);
const barcode = template.elements.find(
(element) => element.kind === "barcode",
)!;
if (barcode.kind !== "barcode") throw new Error("fixture mismatch");
barcode.quietZoneMm = 0;
barcode.xMm = 100;
const issues = validateTemplate(template);
expect(issues.some((issue) => issue.severity === "warning")).toBe(true);
expect(issues.some((issue) => issue.severity === "error")).toBe(true);
});
it("rejects malformed imported element collections without iterating them", () => {
const malformed = JSON.stringify({
...defaultTemplate(40, 20),
elements: { unexpected: true },
});
expect(() => importTemplate(malformed)).toThrow(/at most 100 elements/iu);
});
});