remarkable-plugin-heading-id
Version:
95 lines (74 loc) • 2.01 kB
JavaScript
import { Remarkable } from "remarkable";
import { remarkablePluginHeadingId } from "./main";
describe("remarkable-plugin-heading-id", () => {
test("parse headings with get id function", () => {
const md = new Remarkable();
md.use(remarkablePluginHeadingId, {
createId: (level, content, idx) => `h${level}__${content}__${idx}`,
});
const src = `## heading2
paragraph
### heading3
paragraph2
#### heading4`;
expect(md.render(src)).toEqual(`<h2 id="h2__heading2__0">heading2</h2>
<p>paragraph</p>
<h3 id="h3__heading3__1">heading3</h3>
<p>paragraph2</p>
<h4 id="h4__heading4__2">heading4</h4>
`);
});
test("parse headings id without targets options and createId options", () => {
const md = new Remarkable();
md.use(remarkablePluginHeadingId);
const src = `# heading1
heading
## heading2
paragraph
### heading3
paragraph2
#### heading4
paragraph3
##### heading5
paragraph4
###### heading6
paragraph5`;
expect(md.render(src)).toEqual(`<h1 id="heading1">heading1</h1>
<p>heading</p>
<h2 id="heading2">heading2</h2>
<p>paragraph</p>
<h3 id="heading3">heading3</h3>
<p>paragraph2</p>
<h4 id="heading4">heading4</h4>
<p>paragraph3</p>
<h5 id="heading5">heading5</h5>
<p>paragraph4</p>
<h6 id="heading6">heading6</h6>
<p>paragraph5</p>
`);
});
test("parse headings with target options", () => {
const md = new Remarkable();
md.use(remarkablePluginHeadingId, {
createId: (level, content, idx) => `h${level}__${content}__${idx}`,
targets: ["h2", "h3"],
});
const src = `## heading2
paragraph
### heading3
paragraph2
#### heading4
paragraph3
## heading2_2
paragraph4`;
expect(md.render(src)).toEqual(`<h2 id="h2__heading2__0">heading2</h2>
<p>paragraph</p>
<h3 id="h3__heading3__1">heading3</h3>
<p>paragraph2</p>
<h4>heading4</h4>
<p>paragraph3</p>
<h2 id="h2__heading2_2__2">heading2_2</h2>
<p>paragraph4</p>
`);
});
});