@octopusdeploy/design-system-components
Version:
The design systems component library.
84 lines (83 loc) • 3.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const MarkdownProvider_1 = require("../MarkdownProvider");
function run(job) {
function getResultOrUndefined() {
let result = undefined;
const onApply = (value, start, end) => {
result = { value, start, end };
};
job(onApply);
return result;
}
const result = getResultOrUndefined();
if (result === undefined) {
throw new Error("Result was not defined. The callback was most most likely not triggered.");
}
return result;
}
describe("MarkdownProvider", () => {
test("can insert before", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("insert before this", 7, 13);
const result = run((x) => provider.insertBefore("**").apply(x));
expect(result.value).toBe("insert **before this");
expect(result.start).toBe(9);
expect(result.end).toBe(15);
});
test("can insert after", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("insert after this", 7, 12);
const result = run((x) => provider.insertAfter("**").apply(x));
expect(result.value).toBe("insert after** this");
expect(result.start).toBe(7);
expect(result.end).toBe(12);
});
test("should trim selection", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("should trim selection", 6, 12);
const result = run((x) => provider.apply(x));
expect(result.value).toBe("should trim selection");
expect(result.start).toBe(7);
expect(result.end).toBe(11);
});
test("should insert a line before and after", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("should insert a line", 7, 13);
const result = run((x) => provider.surroundWithNewlines().apply(x));
expect(result.value).toBe("should \ninsert\n a line");
expect(result.start).toBe(8);
expect(result.end).toBe(14);
});
test("should not insert a line after a newline", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("should not \ninsert a line", 12, 18);
const result = run((x) => provider.surroundWithNewlines().apply(x));
expect(result.value).toBe("should not \ninsert\n a line");
expect(result.start).toBe(12);
expect(result.end).toBe(18);
});
test("should add empty text when required", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("add some text", 4, 4);
const result = run((x) => provider.emptySelectionText("empty").apply(x));
expect(result.value).toBe("add emptysome text");
expect(result.start).toBe(4);
expect(result.end).toBe(9);
});
test("should not add empty text when not required", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("add some text", 4, 8);
const result = run((x) => provider.emptySelectionText("empty").apply(x));
expect(result.value).toBe("add some text");
expect(result.start).toBe(4);
expect(result.end).toBe(8);
});
test("should insert something after every new line in the selection", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("should insert \nafter \nnew line in selection \nonly", 7, 30);
const result = run((x) => provider.insertAfterNewlineInSelection("> ").apply(x));
expect(result.value).toBe("should insert \n> after \n> new line in selection \nonly");
expect(result.start).toBe(7);
expect(result.end).toBe(34);
});
test("can chain", () => {
const provider = new MarkdownProvider_1.MarkdownProvider("add around this", 4, 10);
const result = run((x) => provider.insertBefore("**").insertAfter("**").apply(x));
expect(result.value).toBe("add **around** this");
expect(result.start).toBe(6);
expect(result.end).toBe(12);
});
});