66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import trimIndent from "keycloakify/bin/tools/trimIndent";
|
|
import { it, describe, assert } from "vitest";
|
|
|
|
describe("trimIndent", () => {
|
|
it("does not change a left-aligned string as expected", () => {
|
|
const txt = trimIndent`lorem
|
|
ipsum`;
|
|
assert.equal(txt, ["lorem", "ipsum"].join("\n"));
|
|
});
|
|
|
|
it("removes leading and trailing empty lines from a left-aligned string", () => {
|
|
const txt = trimIndent`
|
|
lorem
|
|
ipsum
|
|
`;
|
|
assert.equal(txt, ["lorem", "ipsum"].join("\n"));
|
|
});
|
|
|
|
it("removes indent from an aligned string", () => {
|
|
const txt = trimIndent`
|
|
lorem
|
|
ipsum
|
|
`;
|
|
assert.equal(txt, ["lorem", "ipsum"].join("\n"));
|
|
});
|
|
|
|
it("removes indent from unaligned string", () => {
|
|
const txt = trimIndent`
|
|
lorem
|
|
ipsum
|
|
`;
|
|
assert.equal(txt, ["lorem", " ipsum"].join("\n"));
|
|
});
|
|
|
|
it("removes only first and last empty line", () => {
|
|
const txt = trimIndent`
|
|
|
|
lorem
|
|
ipsum
|
|
|
|
`;
|
|
|
|
assert.equal(txt, ["", "lorem", "ipsum", ""].join("\n"));
|
|
});
|
|
|
|
it("interpolates non-strings", () => {
|
|
const d = new Date();
|
|
const txt = trimIndent`
|
|
lorem
|
|
${d}
|
|
ipsum`;
|
|
|
|
assert.equal(txt, ["lorem", String(d), "ipsum"].join("\n"));
|
|
});
|
|
});
|
|
|
|
it("inderpolates preserving new-lines in the interpolated bits", () => {
|
|
const a = ["ipsum", "dolor", "sit"].join('\n')
|
|
const txt = trimIndent`
|
|
lorem
|
|
${a}
|
|
amet
|
|
`
|
|
assert.equal(txt, ['lorem', 'ipsum', 'dolor', 'sit', 'amet'].join('\n'))
|
|
})
|