UNPKG

@octopusdeploy/design-system-components

Version:
84 lines (83 loc) 3.99 kB
"use strict"; 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); }); });