/
attributes.test.ts
75 lines (63 loc) · 2.37 KB
/
attributes.test.ts
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
import PurgeCSS from "./../src/index";
import { ROOT_TEST_EXAMPLES } from "./utils";
describe("attributes", () => {
let purgedCSS: string;
beforeAll(async () => {
const resultsPurge = await new PurgeCSS().purge({
content: [`${ROOT_TEST_EXAMPLES}attributes/attribute_selector.html`],
css: [`${ROOT_TEST_EXAMPLES}attributes/attribute_selector.css`],
});
purgedCSS = resultsPurge[0].css;
});
it("always keep attribute when attribute is 'value'", () => {
expect(purgedCSS.includes('input[value=""]')).toBe(true);
});
it("handles [attribute]", () => {
// keep used css
expect(purgedCSS.includes("a[target]")).toBe(true);
expect(purgedCSS.includes("input[checked]")).toBe(true);
// remove unused css
expect(purgedCSS.includes("a[invented]")).toBe(false);
});
it("handles [attribute=value]", () => {
// keep used css
expect(purgedCSS.includes('a[target="_blank"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('a[target="no_blank"]')).toBe(false);
});
it("handles [attribute~=value]", () => {
// keep used css
expect(purgedCSS.includes('input[title~="flower"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('input[title~="grass]')).toBe(false);
});
it("handles [attribute|=value]", () => {
// keep used css
expect(purgedCSS.includes('html[lang|="en"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('html[lang|="fr"]')).toBe(false);
});
it("handles [attribute^=value]", () => {
// keep used css
expect(purgedCSS.includes('a[href^="http"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('a[href^="ssl"]')).toBe(false);
});
it("handles [attribute$=value]", () => {
// keep used css
expect(purgedCSS.includes('a[href$="pdf"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('a[href$="jpg"]')).toBe(false);
expect(purgedCSS.includes('a[href$="http"]')).toBe(false);
});
it("handles [attribute*=value]", () => {
// keep used css
expect(purgedCSS.includes('a[title*="thin"]')).toBe(true);
// remove unused css
expect(purgedCSS.includes('a[title*="fat"]')).toBe(false);
});
it("handles spaces in attribute selector", () => {
expect(purgedCSS.includes('[class*=" class2"]')).toBe(true);
expect(purgedCSS.includes('[class*="class1 class2 "]')).toBe(true);
});
});