-
-
Notifications
You must be signed in to change notification settings - Fork 14
/
rules.js
105 lines (92 loc) · 1.98 KB
/
rules.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const test = require('ava')
const analyze = require('../../')
const fixture = `
rule1,
selector1 { }
rule2,
selector2 {
property: value;
}
@media (min-width: 240px) {
rule3 {
property: value;
}
}
@supports (property) {
rule4 {
property: value;
}
@media (min-width: 320px) {
rule5 {
property1: value;
property2: value;
property3: value;
}
}
}
`
let actual
test.beforeEach(() => {
actual = analyze(fixture)
})
test('it counts all rules', (t) => {
t.is(actual['rules.total'].value, 5)
})
test('it counts empty rules', (t) => {
t.is(actual['rules.empty.total'].value, 1)
t.is(actual['rules.empty.ratio'].value, 1 / 5)
})
test('it counts the average # of selectors per rule', (t) => {
t.is(actual['rules.selectors.average'].value, 7 / 5)
})
test('it finds the rules with the most declarations', (t) => {
t.is(actual['rules.declarations.maximum.total'].value, 3)
t.deepEqual(actual['rules.declarations.maximum.declarations'].value, [
{
selectors: [{ value: 'rule5' }],
declarations: [
{
isImportant: false,
property: { name: 'property1' },
value: { value: 'value' },
},
{
isImportant: false,
property: { name: 'property2' },
value: { value: 'value' },
},
{
isImportant: false,
property: { name: 'property3' },
value: { value: 'value' },
},
],
},
])
})
test('it finds the rules with the most selectors', (t) => {
t.is(actual['rules.selectors.maximum.total'].value, 2)
t.deepEqual(actual['rules.selectors.maximum.selectors'].value, [
{
selectors: [{ value: 'rule1' }, { value: 'selector1' }],
declarations: [],
},
{
selectors: [{ value: 'rule2' }, { value: 'selector2' }],
declarations: [
{
isImportant: false,
property: {
name: 'property',
},
value: {
value: 'value',
},
},
],
},
])
})
test('it counts the average # of declarations per rule', (t) => {
t.is(actual['rules.declarations.average'].value, 6 / 5)
})