From 5dda81a58a4db0f2c7efe692c6cb97ccbc11e982 Mon Sep 17 00:00:00 2001 From: Jonathan Haines Date: Wed, 20 Feb 2019 12:01:34 +1100 Subject: [PATCH] Add tests for custom node types --- example.js | 15 ++++++++++++ package.json | 15 +++++++----- readme.md | 18 ++++++++++----- test/index.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 example.js diff --git a/example.js b/example.js new file mode 100644 index 0000000..f193bef --- /dev/null +++ b/example.js @@ -0,0 +1,15 @@ +// Dependencies: +var util = require('util') +var u = require('unist-builder') +var toc = require('.') + +// Given a mdast tree: +var tree = u('root', [ + u('heading', {depth: 1}, [u('text', 'Alpha')]), + u('heading', {depth: 2}, [u('text', 'Bravo')]), + u('heading', {depth: 3}, [u('text', 'Charlie')]), + u('heading', {depth: 2}, [u('text', 'Delta')]) +]) + +// Yields: +console.log('javascript', util.inspect(toc(tree), {depth: 3})) diff --git a/package.json b/package.json index ec81b7c..6e2664c 100644 --- a/package.json +++ b/package.json @@ -20,22 +20,24 @@ "index.js" ], "dependencies": { - "github-slugger": "^1.1.1", - "mdast-util-to-string": "^1.0.2", + "github-slugger": "^1.2.1", + "mdast-util-to-string": "^1.0.5", "unist-util-is": "^2.1.2", "unist-util-visit": "^1.1.0" }, "devDependencies": { - "browserify": "^16.2.1", + "browserify": "^16.2.3", "nyc": "^13.1.0", "prettier": "^1.15.2", "remark": "^10.0.0", "remark-attr": "^0.8.0", "remark-cli": "^6.0.0", "remark-preset-wooorm": "^4.0.0", - "tape": "^4.6.0", + "remark-usage": "^6.1.3", + "tape": "^4.10.1", "tinyify": "^2.5.0", - "xo": "^0.23.0" + "unist-builder": "^1.0.3", + "xo": "^0.24.0" }, "scripts": { "format": "remark . -qfo && prettier --write '**/*.js' && xo --fix", @@ -73,7 +75,8 @@ }, "remarkConfig": { "plugins": [ - "preset-wooorm" + "preset-wooorm", + "remark-usage" ] } } diff --git a/readme.md b/readme.md index 894b1d1..2ef43b0 100644 --- a/readme.md +++ b/readme.md @@ -19,31 +19,37 @@ npm install mdast-util-toc ## Usage +Dependencies: + ```javascript +var util = require('util') var u = require('unist-builder') var toc = require('mdast-util-toc') +``` +Given a mdast tree: + +```javascript var tree = u('root', [ u('heading', {depth: 1}, [u('text', 'Alpha')]), u('heading', {depth: 2}, [u('text', 'Bravo')]), u('heading', {depth: 3}, [u('text', 'Charlie')]), u('heading', {depth: 2}, [u('text', 'Delta')]) ]) - -console.log(toc(tree)) ``` Yields: -```js +```javascript + { index: null, endIndex: null, - map: + map: { type: 'list', ordered: false, spread: true, - children: - [ { type: 'listItem', spread: true, children: [Array] } ] } } + children: + [ { type: 'listItem', loose: true, spread: true, children: [Array] } ] } } ``` ## API diff --git a/test/index.js b/test/index.js index aa41b90..56c794b 100644 --- a/test/index.js +++ b/test/index.js @@ -4,6 +4,7 @@ var fs = require('fs') var path = require('path') var remark = require('remark') var remarkAttr = require('remark-attr') +var u = require('unist-builder') var toc = require('..') var join = path.join @@ -52,3 +53,65 @@ test('Fixtures', function(t) { t.end() }) + +test('processing nodes', function(t) { + var rootNode = u('root', [ + u('heading', {depth: 1}, [u('text', 'Alpha')]), + u('heading', {depth: 2}, [u('text', 'Bravo')]) + ]) + + var parentNode = u('parent', rootNode.children) + + var blockquoteNode = u('root', [ + u('heading', {depth: 1}, [u('text', 'Charlie')]), + u('heading', {depth: 2}, [u('text', 'Delta')]), + u('blockquote', rootNode.children) + ]) + + const expectedRootMap = u('list', {ordered: false, spread: true}, [ + u('listItem', {loose: true, spread: true}, [ + u('paragraph', [ + u('link', {title: null, url: '#alpha'}, [u('text', 'Alpha')]) + ]), + u('list', {ordered: false, spread: false}, [ + u('listItem', {loose: false, spread: false}, [ + u('paragraph', [ + u('link', {title: null, url: '#bravo'}, [u('text', 'Bravo')]) + ]) + ]) + ]) + ]) + ]) + + t.deepEqual( + toc(rootNode), + { + index: null, + endIndex: null, + map: expectedRootMap + }, + 'can process root nodes' + ) + + t.deepEqual( + toc(parentNode), + { + index: null, + endIndex: null, + map: expectedRootMap + }, + 'can process non-root nodes' + ) + + t.deepEqual( + toc(blockquoteNode, {parents: 'blockquote'}), + { + index: null, + endIndex: null, + map: expectedRootMap + }, + 'can process custom parent nodes' + ) + + t.end() +})