Skip to content

Commit 35e534e

Browse files
Add tests for custom node types (#54)
Adds test coverage for the examples discussed in #53, specifically when passing nodes that are not `type: "root"` directly to `toc()`
1 parent 60c5c1b commit 35e534e

File tree

4 files changed

+99
-12
lines changed

4 files changed

+99
-12
lines changed

example.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Dependencies:
2+
var util = require('util')
3+
var u = require('unist-builder')
4+
var toc = require('.')
5+
6+
// Given a mdast tree:
7+
var tree = u('root', [
8+
u('heading', {depth: 1}, [u('text', 'Alpha')]),
9+
u('heading', {depth: 2}, [u('text', 'Bravo')]),
10+
u('heading', {depth: 3}, [u('text', 'Charlie')]),
11+
u('heading', {depth: 2}, [u('text', 'Delta')])
12+
])
13+
14+
// Yields:
15+
console.log('javascript', util.inspect(toc(tree), {depth: 3}))

package.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,24 @@
2020
"index.js"
2121
],
2222
"dependencies": {
23-
"github-slugger": "^1.1.1",
24-
"mdast-util-to-string": "^1.0.2",
23+
"github-slugger": "^1.2.1",
24+
"mdast-util-to-string": "^1.0.5",
2525
"unist-util-is": "^2.1.2",
2626
"unist-util-visit": "^1.1.0"
2727
},
2828
"devDependencies": {
29-
"browserify": "^16.2.1",
29+
"browserify": "^16.2.3",
3030
"nyc": "^13.1.0",
3131
"prettier": "^1.15.2",
3232
"remark": "^10.0.0",
3333
"remark-attr": "^0.8.0",
3434
"remark-cli": "^6.0.0",
3535
"remark-preset-wooorm": "^4.0.0",
36-
"tape": "^4.6.0",
36+
"remark-usage": "^6.1.3",
37+
"tape": "^4.10.1",
3738
"tinyify": "^2.5.0",
38-
"xo": "^0.23.0"
39+
"unist-builder": "^1.0.3",
40+
"xo": "^0.24.0"
3941
},
4042
"scripts": {
4143
"format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
@@ -73,7 +75,8 @@
7375
},
7476
"remarkConfig": {
7577
"plugins": [
76-
"preset-wooorm"
78+
"preset-wooorm",
79+
"remark-usage"
7780
]
7881
}
7982
}

readme.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,37 @@ npm install mdast-util-toc
1919

2020
## Usage
2121

22+
Dependencies:
23+
2224
```javascript
25+
var util = require('util')
2326
var u = require('unist-builder')
2427
var toc = require('mdast-util-toc')
28+
```
2529

30+
Given a mdast tree:
31+
32+
```javascript
2633
var tree = u('root', [
2734
u('heading', {depth: 1}, [u('text', 'Alpha')]),
2835
u('heading', {depth: 2}, [u('text', 'Bravo')]),
2936
u('heading', {depth: 3}, [u('text', 'Charlie')]),
3037
u('heading', {depth: 2}, [u('text', 'Delta')])
3138
])
32-
33-
console.log(toc(tree))
3439
```
3540

3641
Yields:
3742

38-
```js
43+
```javascript
44+
3945
{ index: null,
4046
endIndex: null,
41-
map:
47+
map:
4248
{ type: 'list',
4349
ordered: false,
4450
spread: true,
45-
children:
46-
[ { type: 'listItem', spread: true, children: [Array] } ] } }
51+
children:
52+
[ { type: 'listItem', loose: true, spread: true, children: [Array] } ] } }
4753
```
4854

4955
## API

test/index.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var fs = require('fs')
44
var path = require('path')
55
var remark = require('remark')
66
var remarkAttr = require('remark-attr')
7+
var u = require('unist-builder')
78
var toc = require('..')
89

910
var join = path.join
@@ -52,3 +53,65 @@ test('Fixtures', function(t) {
5253

5354
t.end()
5455
})
56+
57+
test('processing nodes', function(t) {
58+
var rootNode = u('root', [
59+
u('heading', {depth: 1}, [u('text', 'Alpha')]),
60+
u('heading', {depth: 2}, [u('text', 'Bravo')])
61+
])
62+
63+
var parentNode = u('parent', rootNode.children)
64+
65+
var blockquoteNode = u('root', [
66+
u('heading', {depth: 1}, [u('text', 'Charlie')]),
67+
u('heading', {depth: 2}, [u('text', 'Delta')]),
68+
u('blockquote', rootNode.children)
69+
])
70+
71+
const expectedRootMap = u('list', {ordered: false, spread: true}, [
72+
u('listItem', {loose: true, spread: true}, [
73+
u('paragraph', [
74+
u('link', {title: null, url: '#alpha'}, [u('text', 'Alpha')])
75+
]),
76+
u('list', {ordered: false, spread: false}, [
77+
u('listItem', {loose: false, spread: false}, [
78+
u('paragraph', [
79+
u('link', {title: null, url: '#bravo'}, [u('text', 'Bravo')])
80+
])
81+
])
82+
])
83+
])
84+
])
85+
86+
t.deepEqual(
87+
toc(rootNode),
88+
{
89+
index: null,
90+
endIndex: null,
91+
map: expectedRootMap
92+
},
93+
'can process root nodes'
94+
)
95+
96+
t.deepEqual(
97+
toc(parentNode),
98+
{
99+
index: null,
100+
endIndex: null,
101+
map: expectedRootMap
102+
},
103+
'can process non-root nodes'
104+
)
105+
106+
t.deepEqual(
107+
toc(blockquoteNode, {parents: 'blockquote'}),
108+
{
109+
index: null,
110+
endIndex: null,
111+
map: expectedRootMap
112+
},
113+
'can process custom parent nodes'
114+
)
115+
116+
t.end()
117+
})

0 commit comments

Comments
 (0)