-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.test.js
85 lines (78 loc) · 1.81 KB
/
index.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
84
85
const postcss = require('postcss');
const fs = require('fs');
const plugin = require('./');
const testdataDir = 'testdata';
if (!fs.existsSync(testdataDir)) {
fs.mkdirSync(testdataDir);
}
function run(input, output, opts) {
return postcss([plugin(opts)])
.process(input)
.then(result => {
let out = fs.readFileSync(opts.fileName, 'utf-8');
expect(out).toEqual(output);
expect(result.warnings().length).toBe(0);
});
}
it('parses DSS comments and saves them to specified output file', () => {
let input = `/*
* @name Button
* @description Your standard form button.
*
* @state :hover - Highlights when hovering.
* @state .smaller - A smaller button
*
* @markup
* <button>This is a button</button>
*/`;
let output = `{
"blocks": [
{
"name": "Button",
"description": "Your standard form button.",
"state": [
[
{
"name": ":hover",
"escaped": "pseudo-class-hover",
"description": "Highlights when hovering."
}
],
[
{
"name": ".smaller",
"escaped": "smaller",
"description": "A smaller button"
}
]
],
"markup": [
{
"example": " <button>This is a button</button>",
"escaped": " <button>This is a button</button>"
}
]
}
]
}`;
return run(input, output, { fileName: 'testdata/basic_styles.json' });
});
it('accepts custom parsers', () => {
return run('/* @version 1.0 */', `{
"blocks": [
{
"version": "1.0"
}
]
}`, {
fileName: 'testdata/custom_parser.json',
parsers: [
{
atRule: 'version',
func: function () {
return this.line.contents;
}
}
]
});
});