mc-publish/tests/unit/utils/auto-generated.spec.ts
2023-05-19 20:24:56 +03:00

95 lines
4.1 KiB
TypeScript

import { generateAutoGeneratedWarningText, generateAutoGeneratedWarningFrame } from "@/utils/auto-generated";
describe("generateAutoGeneratedWarningText", () => {
test("generates the correct warning text without a source file name", () => {
const warning = generateAutoGeneratedWarningText();
expect(warning).toMatch("WARNING: AUTO-GENERATED FILE - DO NOT EDIT!");
expect(warning).not.toMatch("To make changes to the contents of this file, please modify");
});
test("generates the correct warning text with a source file name", () => {
const warning = generateAutoGeneratedWarningText("test.ts");
expect(warning).toMatch("WARNING: AUTO-GENERATED FILE - DO NOT EDIT!");
expect(warning).toMatch("To make changes to the contents of this file, please modify the test.ts file instead.");
});
});
describe("generateAutoGeneratedWarningFrame", () => {
test("generates a warning frame with default options", () => {
const frame = generateAutoGeneratedWarningFrame();
expect(frame).toMatch(/^#\s+WARNING: AUTO-GENERATED FILE - DO NOT EDIT!\s+#$/m);
expect(frame).toMatch(/^#\s+Please be advised that this is an auto-generated file and should NOT be modified. Any changes made to this file WILL BE OVERWRITTEN.\s+#$/m);
});
test("generates a warning frame with a custom message", () => {
const frame = generateAutoGeneratedWarningFrame({ message: "Custom message" });
expect(frame).toMatch(/^#\sCustom message\s#$/m);
});
test("generates a warning frame with custom frame style", () => {
const frame = generateAutoGeneratedWarningFrame({
style: {
lineStart: "/** ",
filler: "=",
lineEnd: " **/",
},
});
expect(frame).toMatch(/^\/\*\*\s=+\s\*\*\/$/m);
expect(frame).toMatch(/^\/\*\*\s+WARNING: AUTO-GENERATED FILE - DO NOT EDIT!\s+\*\*\/$/m);
expect(frame).toMatch(/^\/\*\*\s+Please be advised that this is an auto-generated file and should NOT be modified. Any changes made to this file WILL BE OVERWRITTEN.\s+\*\*\/$/m);
});
test("generates a warning frame respecting the lineWidth option", () => {
const frame = generateAutoGeneratedWarningFrame({ lineWidth: 40 });
const lines = frame.split(/\r?\n/);
const lineWidths = new Set(lines.map(x => x.length));
const lineWidth = [...lineWidths.values()][0];
expect(lineWidths.size).toBe(1);
expect(Math.abs(40 - lineWidth)).toBeLessThanOrEqual(1);
});
test("aligns message to the left when align option is 'left'", () => {
const frame = generateAutoGeneratedWarningFrame({ align: "left" });
expect(frame).toMatch(/^#\sWARNING: AUTO-GENERATED FILE - DO NOT EDIT!\s{2,}#$/m);
});
test("aligns message to the center when align option is 'center'", () => {
const frame = generateAutoGeneratedWarningFrame({ align: "center" });
expect(frame).toMatch(/^#\s{2,}WARNING: AUTO-GENERATED FILE - DO NOT EDIT!\s{2,}#$/m);
});
test("aligns message to the right when align option is 'right'", () => {
const frame = generateAutoGeneratedWarningFrame({ align: "right" });
expect(frame).toMatch(/^#\s{2,}WARNING: AUTO-GENERATED FILE - DO NOT EDIT!\s#$/m);
});
test("uses \\n as newline sequence when newline option is '\\n'", () => {
const frame = generateAutoGeneratedWarningFrame({ newline: "\n" });
expect(frame).toMatch(/\n/);
expect(frame).not.toMatch(/\r\n/);
});
test("uses \\r\\n as newline sequence when newline option is '\\r\\n'", () => {
const frame = generateAutoGeneratedWarningFrame({ newline: "\r\n" });
expect(frame).toMatch(/\r\n/);
expect(frame).not.toMatch(/[^\r]\n/);
});
test("uses custom string as newline sequence when newline option is a custom string", () => {
const frame = generateAutoGeneratedWarningFrame({ newline: "NEWLINE" });
expect(frame).toMatch(/NEWLINE/);
expect(frame).not.toMatch(/\n/);
expect(frame).not.toMatch(/\r\n/);
});
});