Skip to content

Commit 508ea81

Browse files
committed
test(markdown): add more unit tests for toc plugin
1 parent cf8a79a commit 508ea81

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

packages/@vuepress/markdown/__tests__/plugins/__snapshots__/tocPlugin.spec.ts.snap

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,71 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`@vuepress/markdown > plugins > tocPlugin should render class name correctly complexTree 1`] = `
4+
<nav>
5+
<ul class="toc-list">
6+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-1">s1-1</a>
7+
<ul class="toc-list">
8+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-1-1">s1-1-1</a></li>
9+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-1-2">s1-1-2</a></li>
10+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-1-3">s1-1-3</a></li>
11+
</ul>
12+
</li>
13+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-2">s1-2</a></li>
14+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-3">s1-3</a>
15+
<ul class="toc-list">
16+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #s1-3-2">s1-3-2</a></li>
17+
</ul>
18+
</li>
19+
</ul>
20+
</nav>
21+
<h1>s1</h1>
22+
<h2>s1-1</h2>
23+
<h3>s1-1-1</h3>
24+
<h4>s1-1-1-1</h4>
25+
<h3>s1-1-2</h3>
26+
<h3>s1-1-3</h3>
27+
<h4>s1-1-3-1</h4>
28+
<h2>s1-2</h2>
29+
<h2>s1-3</h2>
30+
<h3>s1-3-2</h3>
31+
<h4>s1-3-2-1</h4>
32+
<h5>s1-3-2-1-1</h5>
33+
<h5>s1-3-2-1-2</h5>
34+
`;
35+
36+
exports[`@vuepress/markdown > plugins > tocPlugin should render class name correctly reversedTree 1`] = `
37+
<nav>
38+
<ul class="toc-list">
39+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #h3">h3</a></li>
40+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #h2">h2</a></li>
41+
</ul>
42+
</nav>
43+
<h6>h6</h6>
44+
<h5>h5</h5>
45+
<h4>h4</h4>
46+
<h3>h3</h3>
47+
<h2>h2</h2>
48+
<h1>h1</h1>
49+
`;
50+
51+
exports[`@vuepress/markdown > plugins > tocPlugin should render class name correctly simpleTree 1`] = `
52+
<nav>
53+
<ul class="toc-list">
54+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #h2">h2</a>
55+
<ul class="toc-list">
56+
<li class="toc-item" class="toc-item"><a class="toc-link href=" #h3">h3</a></li>
57+
</ul>
58+
</li>
59+
</ul>
60+
</nav>
61+
<h1>h1</h1>
62+
<h2>h2</h2>
63+
<h3>h3</h3>
64+
<h4>h4</h4>
65+
<h5>h5</h5>
66+
<h6>h6</h6>
67+
`;
68+
369
exports[`@vuepress/markdown > plugins > tocPlugin should render toc (h1, h2, h3, h4) complexTree 1`] = `
470
<nav class="table-of-contents">
571
<ul>

packages/@vuepress/markdown/__tests__/plugins/tocPlugin.spec.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,24 @@ describe('@vuepress/markdown > plugins > tocPlugin', () => {
7676
})
7777
})
7878

79+
describe('should render class name correctly', () => {
80+
const md = MarkdownIt().use(tocPlugin, {
81+
// remove default container class
82+
containerClass: '',
83+
// add custom list / item / link class
84+
listClass: 'toc-list',
85+
itemClass: 'toc-item',
86+
linkClass: 'toc-link',
87+
})
88+
89+
Object.entries(fixtures).forEach(([name, source]) => {
90+
it(name, () => {
91+
const result = md.render(source)
92+
expect(result).toMatchSnapshot()
93+
})
94+
})
95+
})
96+
7997
describe('should include html elements and should escape texts', () => {
8098
const md = MarkdownIt({
8199
html: true,
@@ -143,4 +161,21 @@ describe('@vuepress/markdown > plugins > tocPlugin', () => {
143161
})
144162
)
145163
})
164+
165+
describe('edge cases', () => {
166+
it('should not terminate the blockquote', () => {
167+
const md = MarkdownIt().use(tocPlugin)
168+
169+
const source = `\
170+
> foo
171+
[[toc]]
172+
`
173+
expect(md.render(source)).toEqual(`\
174+
<blockquote>
175+
<p>foo
176+
[[toc]]</p>
177+
</blockquote>
178+
`)
179+
})
180+
})
146181
})

packages/@vuepress/markdown/src/plugins/tocPlugin/tocPlugin.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export const tocPlugin: PluginWithOptions<TocPluginOptions> = (
136136

137137
// custom toc_body render rule
138138
md.renderer.rules.toc_body = () => {
139+
/* istanbul ignore if */
139140
if (!headers) {
140141
return ''
141142
}

0 commit comments

Comments
 (0)