/
isStandardSyntaxSelector.test.js
89 lines (86 loc) · 3.17 KB
/
isStandardSyntaxSelector.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
86
87
88
89
'use strict';
const isStandardSyntaxSelector = require('../isStandardSyntaxSelector');
describe('isStandardSyntaxSelector', () => {
it('type', () => {
expect(isStandardSyntaxSelector('a')).toBeTruthy();
});
it('class', () => {
expect(isStandardSyntaxSelector('.a')).toBeTruthy();
});
it('attribute', () => {
expect(isStandardSyntaxSelector('[a=a]')).toBeTruthy();
});
it('universal', () => {
expect(isStandardSyntaxSelector('*')).toBeTruthy();
});
it('pseudo-class', () => {
expect(isStandardSyntaxSelector('a:last-child')).toBeTruthy();
});
it('pseudo-class with function', () => {
expect(isStandardSyntaxSelector('a:not(.b)')).toBeTruthy();
});
it('pseudo-element', () => {
expect(isStandardSyntaxSelector('a::after')).toBeTruthy();
});
it('compound', () => {
expect(isStandardSyntaxSelector('a.b')).toBeTruthy();
});
it('complex', () => {
expect(isStandardSyntaxSelector('a > b')).toBeTruthy();
});
it('list', () => {
expect(isStandardSyntaxSelector('a, b')).toBeTruthy();
});
it('SCSS interpolation (id)', () => {
expect(isStandardSyntaxSelector('#{50% - $n}')).toBeFalsy();
});
it('SCSS interpolation (class)', () => {
expect(isStandardSyntaxSelector('.n-#{$n}')).toBeFalsy();
});
it('SCSS interpolation (pseudo)', () => {
expect(isStandardSyntaxSelector(':n-#{$n}')).toBeFalsy();
});
it('SCSS placeholder', () => {
expect(isStandardSyntaxSelector('%foo')).toBeFalsy();
});
it('SCSS nested properties', () => {
expect(isStandardSyntaxSelector('.a { .b }')).toBeFalsy();
expect(isStandardSyntaxSelector('.a { &:hover }')).toBeFalsy();
});
it('Less interpolation', () => {
expect(isStandardSyntaxSelector('.n-@{n}')).toBeFalsy();
});
it('Less extend', () => {
expect(isStandardSyntaxSelector('.a:extend(.a)')).toBeFalsy();
});
it('Less extend `all`', () => {
expect(isStandardSyntaxSelector('.a:extend(.a all)')).toBeFalsy();
});
it('Less extend inside ruleset', () => {
expect(isStandardSyntaxSelector('a { &:extend(.a all) }')).toBeFalsy();
});
it('Less mixin', () => {
expect(isStandardSyntaxSelector('.foo()')).toBeFalsy();
});
it('Less mixin with resolved nested selectors', () => {
expect(isStandardSyntaxSelector('.foo().bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo(@a, @b).bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo()#bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo()#bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo() bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo() + bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo() > bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo() ~ bar')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo()[bar]')).toBeFalsy();
expect(isStandardSyntaxSelector(".foo()[bar='baz']")).toBeFalsy();
});
it('Less parametric mixin', () => {
expect(isStandardSyntaxSelector('.foo(@a)')).toBeFalsy();
expect(isStandardSyntaxSelector('.foo(@a: 5px)')).toBeFalsy();
});
it('ERB templates', () => {
// E. g. like in https://github.com/stylelint/stylelint/issues/4489
expect(isStandardSyntaxSelector('<% COLORS.each do |color| %>\na')).toBe(false);
expect(isStandardSyntaxSelector('<% eng %>\na')).toBe(false);
});
});