/
isStandardSyntaxSelector.test.js
78 lines (76 loc) · 2.84 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
import isStandardSyntaxSelector from "../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("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("SCSS placeholder", () => {
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("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);
});
});