-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.js
83 lines (72 loc) · 2.17 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const unified = require('unified')
const parser = require('remark-parse')
const stringify = require('remark-stringify')
const { test } = require('tap')
const codeblocks = require('.')
test('remark-code-blocks', t => {
const mixLang = '# Test\n```\nconst a = 42\n```\n\n```go\nfmt.Println("Hi")\n```'
const noLang = '# Test\n```\nconst a = 42\n```'
const processor = unified()
.use(parser)
.use(stringify)
t.test('standalone function', it => {
const tree = unified()
.use(parser)
.parse(noLang)
const code = codeblocks.codeblocks(tree)
it.ok(
code.codeblocks,
'It should return an object with a codeblocks property'
)
it.ok(
Array.isArray(code.codeblocks._),
'It should create a `_` property in `codeblocks`'
)
it.end()
})
t.test('with codeblocks already taken', it => {
let file = processor().processSync(noLang)
file.data.codeblocks = {_: []}
let newFile = processor()
.use(codeblocks)
.processSync(file)
it.ok(
newFile.data.codeblocks._,
'it should not replace already stored.'
)
it.end()
})
t.test('it should work without options', it => {
let p = processor().use(codeblocks)
it.ok(
p.processSync(noLang).data.codeblocks,
'it should create a `codeblocks` property in vfile.data'
)
it.ok(
Array.isArray(p.processSync(noLang).data.codeblocks._),
'it should create a `_` property in `codeblocks` for nodes with no lang'
)
it.end()
})
t.test('it should change prop name in VFile.data based options.name', it => {
let p = processor().use(codeblocks, { name: 'code' })
it.ok(
p.processSync(noLang).data.code,
'it should change name for property'
)
it.end()
})
t.test('it should only select code nodes with specified lang from options', it => {
let p = processor().use(codeblocks, { name: 'code', lang: 'go' })
it.ok(
Array.isArray(p.processSync(mixLang).data.code),
'When lang options is specified store in array'
)
it.ok(
p.processSync(mixLang).data.code[0] === 'fmt.Println("Hi")',
'it should only select one language'
)
it.end()
})
t.end()
})