/
index.js
87 lines (74 loc) · 2.16 KB
/
index.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
86
87
import ava from 'ava';
import postcss from 'postcss';
import plugin from '../';
import {name} from '../../package.json';
const fixture = 'h1{color:blue}';
let backgroundify = postcss.plugin('backgroundify', () => {
return css => {
css.walkDecls(decl => decl.prop = 'background');
};
});
let redify = postcss.plugin('redify', () => {
return css => {
return new Promise(resolve => {
setTimeout(() => {
css.walkDecls(decl => decl.value = 'red');
return resolve();
}, 50);
});
};
});
ava('should not print anything if no plugins', t => {
return postcss([plugin()]).process(fixture).then(result => {
t.deepEqual(result.messages.length, 0);
});
});
ava('should work with sync plugins', t => {
let processors = [
plugin({silent: true}),
backgroundify
];
return postcss(processors).process(fixture).then(result => {
t.deepEqual(result.messages.length, 1);
});
});
ava('should work with async plugins', t => {
let processors = [
plugin({silent: true}),
redify()
];
return postcss(processors).process(fixture).then(result => {
t.deepEqual(result.messages.length, 1);
});
});
ava('should print different colours for the slower plugins', t => {
let processors = [
plugin(),
redify(),
redify(),
redify(),
redify(),
backgroundify(),
backgroundify(),
backgroundify(),
backgroundify(),
backgroundify(),
backgroundify()
];
return postcss(processors).process(fixture).then(result => {
t.deepEqual(result.messages.length, 10);
});
});
ava('should work with filenames', t => {
let processors = [
plugin(),
backgroundify
];
return postcss(processors).process(fixture, {from: 'app.css'}).then(result => {
t.deepEqual(result.messages.length, 1);
});
});
ava('should use the postcss plugin api', t => {
t.truthy(plugin().postcssVersion, 'should be able to access version');
t.deepEqual(plugin().postcssPlugin, name, 'should be able to access name');
});