mirror of
https://github.com/Kir-Antipov/mc-publish.git
synced 2024-11-26 18:31:01 -05:00
96 lines
4.1 KiB
TypeScript
96 lines
4.1 KiB
TypeScript
|
import { generateAutoGeneratedWarningText, generateAutoGeneratedWarningFrame, YAML_FRAME_STYLE } 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/);
|
||
|
});
|
||
|
});
|