Release Label Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 11:52:44 +02:00
parent 4e3df8d4a4
commit d3e43bea98
37 changed files with 1733 additions and 119 deletions
+39
View File
@@ -0,0 +1,39 @@
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);
});
});