import { decodeData } from "@vuepress/helper"; import MarkdownIt from "markdown-it"; import { describe, expect, it } from "vitest"; import { markmap } from "../../src/node/markdown-it/markmap.js"; const content = `\ --- markmap: colorFreezeLevel: 2 --- # markmap ## Links - - [GitHub](https://github.com/markmap/markmap) ## Features - links - **strong** ~~del~~ *italic* ==highlight== - multiline text - \`inline code\` - \`\`\`js const a = 1; \`\`\` - Katex - $x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}$ - Now we can wrap very very very very long text based on \`maxWidth\` option `; describe("markmap plugin", () => { const markdownIt = MarkdownIt({ linkify: true }).use(markmap); it("Should render ```markmap", () => { const renderResult = markdownIt.render(` \`\`\`\`markmap ${content} \`\`\`\` `); expect(renderResult).toMatch( /<\/MarkMap>/, ); expect( decodeData( /<\/MarkMap>/.exec( renderResult, )?.[1] ?? "", ), ).toMatch(content); expect(renderResult).toMatchSnapshot(); }); it("Should not render", () => { expect( markdownIt.render(` ${content} `), ).toMatchSnapshot(); expect( markdownIt.render(` \`\`\`md ${content} \`\`\` `), ).toMatchSnapshot(); }); });