Files
test-repo/tests/unit/doc-builders.js
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

116 lines
2.6 KiB
JavaScript
Raw Normal View History

2023-01-11 11:22:10 +08:00
import {
addAlignmentToDoc,
align,
2023-01-11 11:22:10 +08:00
conditionalGroup,
dedent,
dedentToRoot,
2023-01-11 11:22:10 +08:00
fill,
group,
2023-01-11 11:22:10 +08:00
ifBreak,
indent,
indentIfBreak,
2025-11-03 01:52:26 +08:00
InvalidDocError,
join,
2023-01-11 11:22:10 +08:00
label,
line,
lineSuffix,
markAsRoot,
trim,
2025-11-03 01:52:26 +08:00
} from "../../src/document/index.js";
2023-01-11 11:22:10 +08:00
const invalidDoc = { type: "invalid-type" };
const validDoc = "string";
const notArray = {};
describe("doc builders", () => {
const invalid = [
() => indent(),
() => indent(invalidDoc),
() => align(2),
() => align(2, invalidDoc),
2025-11-03 23:36:45 +08:00
[() => align(["invalid"], validDoc), TypeError],
[() => align(undefined, validDoc), TypeError],
2023-01-11 11:22:10 +08:00
() => group(),
() => group(invalidDoc),
[() => group(validDoc, { expandedStates: notArray }), TypeError],
() => group(validDoc, { expandedStates: [invalidDoc] }),
() => dedentToRoot(),
() => dedentToRoot(invalidDoc),
() => markAsRoot(),
() => markAsRoot(invalidDoc),
() => dedent(),
() => dedent(invalidDoc),
[() => conditionalGroup(), TypeError],
() => conditionalGroup([]),
() => conditionalGroup([invalidDoc]),
() => conditionalGroup([validDoc, invalidDoc]),
[() => fill(), TypeError],
[() => fill(notArray), TypeError],
() => fill([invalidDoc]),
[() => fill(["abc", "abc"]), Error],
[() => fill(["abc", line, "def", "ghi"]), Error],
[() => fill(["abc", [line, "def"], "ghi"]), Error],
[() => fill(["abc", "", "def"]), Error],
2023-01-11 11:22:10 +08:00
() => ifBreak(),
() => ifBreak(invalidDoc),
() => ifBreak(validDoc, 0),
() => ifBreak(validDoc, null),
() => ifBreak(validDoc, invalidDoc),
() => indentIfBreak(),
() => indentIfBreak(invalidDoc),
() => lineSuffix(),
() => lineSuffix(invalidDoc),
() => join(),
() => join(invalidDoc),
() => join(invalidDoc, []),
[() => join(validDoc, notArray), TypeError],
() => join(validDoc, [invalidDoc]),
() => addAlignmentToDoc(),
() => addAlignmentToDoc(invalidDoc),
() => label(),
() => label({}, invalidDoc),
];
const valid = [
group(validDoc),
group(validDoc, { expandedStates: undefined }),
ifBreak(validDoc),
// eslint-disable-next-line unicorn/no-useless-undefined
ifBreak(validDoc, undefined),
2025-11-03 23:36:45 +08:00
align("any string", validDoc),
trim,
2023-01-11 11:22:10 +08:00
];
describe("Invalid usage", () => {
for (let invalidCase of invalid) {
if (!Array.isArray(invalidCase)) {
invalidCase = [invalidCase, InvalidDocError];
}
test(invalidCase[0].toString(), () => {
expect(invalidCase[0]).toThrow(invalidCase[1]);
});
}
});
test("Valid usage", () => {
for (const doc of valid) {
expect(doc).toBeDefined();
}
});
});