import { anchor as anchorPlugin } from '@mdit/plugin-anchor' import { attrs as attrsPlugin } from '@mdit/plugin-attrs' import { MarkdownItAsync } from 'markdown-it-async' import { createMarkdownRenderer, disposeMdItInstance, type MarkdownOptions } from 'node/markdown/markdown' async function render(src: string, options: MarkdownOptions = {}) { disposeMdItInstance() const md = await createMarkdownRenderer('.', { highlight: (code) => code, ...options }) return md.renderAsync(src) } describe('node/markdown/markdown', () => { describe('disabling built-in plugins', () => { test('anchor', async () => { const enabled = await render('# Hello World') expect(enabled).toContain('id="hello-world"') expect(enabled).toContain('header-anchor') const disabled = await render('# Hello World', { anchor: false }) expect(disabled).not.toContain('id=') expect(disabled).not.toContain('header-anchor') }) test('attrs', async () => { const enabled = await render('## Title {#custom-id}') expect(enabled).toContain('id="custom-id"') const disabled = await render('## Title {#custom-id}', { attrs: false }) expect(disabled).not.toContain('id="custom-id"') expect(disabled).toContain('{#custom-id}') }) test('emoji', async () => { expect(await render(':tada:')).toContain('๐') expect(await render(':tada:', { emoji: false })).toContain(':tada:') }) test('tasklist', async () => { const src = '- [ ] todo' expect(await render(src)).toContain(' { const src = '# Title\n\n[[toc]]' expect(await render(src)).toContain('table-of-contents') const disabled = await render(src, { toc: false }) expect(disabled).not.toContain('table-of-contents') expect(disabled).toContain('[[toc]]') }) test('preWrapper', async () => { const src = '```js\nconst a = 1\n```' const enabled = await render(src) expect(enabled).toContain('
') const disabled = await render(src, { component: false }) expect(disabled).toContain('
text\n
') expect(await render('- item\n{.cls}')).toContain('