Skip to content

Commit d44f574

Browse files
committed
Add default extractor tests
1 parent 92fd934 commit d44f574

File tree

1 file changed

+329
-0
lines changed

1 file changed

+329
-0
lines changed

__tests__/purgecssDefault.test.js

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
import Purgecss from './../src/index'
2+
const root = './__tests__/test_examples/'
3+
4+
5+
6+
describe('purge methods with files and default extractor', () => {
7+
it('purge correctly with default extractor', () => {
8+
const purgeCss = new Purgecss({
9+
content: ['./__tests__/test_examples/attribute_selector/attribute_selector.html'],
10+
css: ['./__tests__/test_examples/attribute_selector/attribute_selector.css']
11+
})
12+
const received = purgeCss.purge()[0].css
13+
expect(received.includes('.ui.grid')).toBe(true)
14+
})
15+
16+
describe('purge correctly (find intact classes) with default extractor', () => {
17+
it('finds .single', () => {
18+
const purgeCss = new Purgecss({
19+
content: [`${root}simple/simple.js`],
20+
css: [`${root}simple/simple.css`]
21+
})
22+
const result = purgeCss.purge()[0].css
23+
expect(result.includes('.single')).toBe(true)
24+
})
25+
26+
it('finds .double-class', () => {
27+
const purgeCss = new Purgecss({
28+
content: [`${root}simple/simple.js`],
29+
css: [`${root}simple/simple.css`]
30+
})
31+
const result = purgeCss.purge()[0].css
32+
expect(result.includes('.double-class')).toBe(true)
33+
})
34+
35+
it('can find .triple-simple-class', () => {
36+
const purgeCss = new Purgecss({
37+
content: [`${root}simple/simple.js`],
38+
css: [`${root}simple/simple.css`]
39+
})
40+
const result = purgeCss.purge()[0].css
41+
expect(result.includes('.triple-simple-class')).toBe(true)
42+
})
43+
})
44+
45+
describe('filters out unused selectors', () => {
46+
it('contains .used-class', () => {
47+
const purgecss = new Purgecss({
48+
content: [`${root}remove_unused/remove_unused.js`],
49+
css: [`${root}remove_unused/remove_unused.css`]
50+
})
51+
const result = purgecss.purge()[0].css
52+
expect(result.includes('.used-class')).toBe(true)
53+
})
54+
55+
it('removes .unused-class', () => {
56+
const purgecss = new Purgecss({
57+
content: [`${root}remove_unused/remove_unused.js`],
58+
css: [`${root}remove_unused/remove_unused.css`]
59+
})
60+
const result = purgecss.purge()[0].css
61+
expect(result.includes('.unused-class')).toBe(false)
62+
})
63+
64+
it('removes .another-one-not-found', () => {
65+
const purgecss = new Purgecss({
66+
content: [`${root}remove_unused/remove_unused.js`],
67+
css: [`${root}remove_unused/remove_unused.css`]
68+
})
69+
const result = purgecss.purge()[0].css
70+
expect(result.includes('.another-one-not-found')).toBe(false)
71+
})
72+
})
73+
74+
describe('camelCase', () => {
75+
it('finds testFoo', () => {
76+
const purgecss = new Purgecss({
77+
content: [`${root}camel_case/camel_case.js`],
78+
css: [`${root}camel_case/camel_case.css`]
79+
})
80+
const result = purgecss.purge()[0].css
81+
expect(result.includes('testFoo')).toBe(true)
82+
})
83+
84+
it('finds camelCase', () => {
85+
const purgecss = new Purgecss({
86+
content: [`${root}camel_case/camel_case.js`],
87+
css: [`${root}camel_case/camel_case.css`]
88+
})
89+
const result = purgecss.purge()[0].css
90+
expect(result.includes('camelCase')).toBe(true)
91+
})
92+
})
93+
94+
describe('wildcard', () => {
95+
it('finds universal selector', () => {
96+
const purgecss = new Purgecss({
97+
content: [`${root}wildcard/wildcard.html`],
98+
css: [`${root}wildcard/wildcard.css`]
99+
})
100+
const result = purgecss.purge()[0].css
101+
expect(result.includes('*')).toBe(true)
102+
})
103+
104+
it('finds :before', () => {
105+
const purgecss = new Purgecss({
106+
content: [`${root}wildcard/wildcard.html`],
107+
css: [`${root}wildcard/wildcard.css`]
108+
})
109+
const result = purgecss.purge()[0].css
110+
expect(result.includes('before')).toBe(true)
111+
})
112+
113+
it('finds scrollbar', () => {
114+
const purgecss = new Purgecss({
115+
content: [`${root}wildcard/wildcard.html`],
116+
css: [`${root}wildcard/wildcard.css`]
117+
})
118+
const result = purgecss.purge()[0].css
119+
expect(result.includes('scrollbar')).toBe(true)
120+
})
121+
122+
it('finds selection', () => {
123+
const purgecss = new Purgecss({
124+
content: [`${root}wildcard/wildcard.html`],
125+
css: [`${root}wildcard/wildcard.css`]
126+
})
127+
const result = purgecss.purge()[0].css
128+
expect(result.includes('selection')).toBe(true)
129+
})
130+
131+
it('finds vertical', () => {
132+
const purgecss = new Purgecss({
133+
content: [`${root}wildcard/wildcard.html`],
134+
css: [`${root}wildcard/wildcard.css`]
135+
})
136+
const result = purgecss.purge()[0].css
137+
expect(result.includes('vertical')).toBe(true)
138+
})
139+
140+
it('finds :root', () => {
141+
const purgecss = new Purgecss({
142+
content: [`${root}wildcard/wildcard.html`],
143+
css: [`${root}wildcard/wildcard.css`]
144+
})
145+
const result = purgecss.purge()[0].css
146+
expect(result.includes(':root')).toBe(true)
147+
})
148+
})
149+
150+
describe('media queries', () => {
151+
it('finds .media-class', () => {
152+
const purgecss = new Purgecss({
153+
content: [`${root}media_queries/media_queries.html`],
154+
css: [`${root}media_queries/media_queries.css`]
155+
})
156+
const result = purgecss.purge()[0].css
157+
expect(result.includes('.media-class')).toBe(true)
158+
})
159+
160+
it('finds .alone', () => {
161+
const purgecss = new Purgecss({
162+
content: [`${root}media_queries/media_queries.html`],
163+
css: [`${root}media_queries/media_queries.css`]
164+
})
165+
const result = purgecss.purge()[0].css
166+
expect(result.includes('.alone')).toBe(true)
167+
})
168+
169+
it('finds #id-in-media', () => {
170+
const purgecss = new Purgecss({
171+
content: [`${root}media_queries/media_queries.html`],
172+
css: [`${root}media_queries/media_queries.css`]
173+
})
174+
const result = purgecss.purge()[0].css
175+
expect(result.includes('#id-in-media')).toBe(true)
176+
})
177+
178+
it('finds body', () => {
179+
const purgecss = new Purgecss({
180+
content: [`${root}media_queries/media_queries.html`],
181+
css: [`${root}media_queries/media_queries.css`]
182+
})
183+
const result = purgecss.purge()[0].css
184+
expect(result.includes('body')).toBe(true)
185+
})
186+
187+
it('removes .unused-class', () => {
188+
const purgecss = new Purgecss({
189+
content: [`${root}media_queries/media_queries.html`],
190+
css: [`${root}media_queries/media_queries.css`]
191+
})
192+
const result = purgecss.purge()[0].css
193+
expect(result.includes('.unused-class')).toBe(false)
194+
})
195+
196+
it('removes the empty media query', () => {
197+
const purgecss = new Purgecss({
198+
content: [`${root}media_queries/media_queries.html`],
199+
css: [`${root}media_queries/media_queries.css`]
200+
})
201+
const result = purgecss.purge()[0].css
202+
expect(result.includes('66666px')).toBe(false)
203+
})
204+
})
205+
206+
describe('delimited', () => {
207+
it('removes the extra comma', () => {
208+
const purgecss = new Purgecss({
209+
content: [`${root}delimited/delimited.html`],
210+
css: [`${root}delimited/delimited.css`]
211+
})
212+
const result = purgecss.purge()[0].css
213+
var commaCount = result.split('').reduce((total, chr) => {
214+
if (chr === ',') {
215+
return total + 1
216+
}
217+
218+
return total
219+
}, 0)
220+
221+
expect(commaCount).toBe(0)
222+
})
223+
224+
it('finds h1', () => {
225+
const purgecss = new Purgecss({
226+
content: [`${root}delimited/delimited.html`],
227+
css: [`${root}delimited/delimited.css`]
228+
})
229+
const result = purgecss.purge()[0].css
230+
expect(result.includes('h1')).toBe(true)
231+
})
232+
233+
it('removes p', () => {
234+
const purgecss = new Purgecss({
235+
content: [`${root}delimited/delimited.html`],
236+
css: [`${root}delimited/delimited.css`]
237+
})
238+
const result = purgecss.purge()[0].css
239+
expect(result.includes('p')).toBe(false)
240+
})
241+
242+
it('removes .unused-class-name', () => {
243+
const purgecss = new Purgecss({
244+
content: [`${root}delimited/delimited.html`],
245+
css: [`${root}delimited/delimited.css`]
246+
})
247+
const result = purgecss.purge()[0].css
248+
expect(result.includes('.unused-class-name')).toBe(false)
249+
})
250+
})
251+
252+
describe('pseudo classes', () => {
253+
it('finds div:before', () => {
254+
const purgecss = new Purgecss({
255+
content: [`${root}pseudo_class/pseudo_class.js`],
256+
css: [`${root}pseudo_class/pseudo_class.css`]
257+
})
258+
const result = purgecss.purge()[0].css
259+
expect(result.includes('div:before')).toBe(true)
260+
})
261+
262+
it('removes row:after', () => {
263+
const purgecss = new Purgecss({
264+
content: [`${root}pseudo_class/pseudo_class.js`],
265+
css: [`${root}pseudo_class/pseudo_class.css`]
266+
})
267+
const result = purgecss.purge()[0].css
268+
expect(result.includes('row:after')).toBe(false)
269+
})
270+
})
271+
272+
describe('ignore comment', () => {
273+
it('ignore h1', () => {
274+
const purgecss = new Purgecss({
275+
content: [`${root}ignore_comment/ignore_comment.html`],
276+
css: [`${root}ignore_comment/ignore_comment.css`]
277+
})
278+
const result = purgecss.purge()[0].css
279+
expect(result.includes('h1')).toBe(true)
280+
})
281+
})
282+
283+
describe('font-face', () => {
284+
it('keeps font-face', () => {
285+
const purgecss = new Purgecss({
286+
content: [`${root}font_face/font_face.html`],
287+
css: [`${root}font_face/font_face.css`]
288+
})
289+
const result = purgecss.purge()[0].css
290+
expect(result.includes('font-face')).toBe(true)
291+
})
292+
})
293+
294+
describe('chaining rules', () => {
295+
it('keep parent1 selector', () => {
296+
const purgecss = new Purgecss({
297+
content: [`${root}chaining_rules/index.html`],
298+
css: [`${root}chaining_rules/index.css`]
299+
})
300+
const result = purgecss.purge()[0].css
301+
expect(result.includes('parent1')).toBe(true)
302+
})
303+
it('remove parent3 selector', () => {
304+
const purgecss = new Purgecss({
305+
content: [`${root}chaining_rules/index.html`],
306+
css: [`${root}chaining_rules/index.css`]
307+
})
308+
const result = purgecss.purge()[0].css
309+
expect(result.includes('parent3')).toBe(false)
310+
})
311+
it('remove d33ef1 selector', () => {
312+
const purgecss = new Purgecss({
313+
content: [`${root}chaining_rules/index.html`],
314+
css: [`${root}chaining_rules/index.css`]
315+
})
316+
const result = purgecss.purge()[0].css
317+
expect(result.includes('d33ef1')).toBe(false)
318+
})
319+
it('remove .parent2', () => {
320+
const purgecss = new Purgecss({
321+
content: [`${root}chaining_rules/index.html`],
322+
css: [`${root}chaining_rules/index.css`]
323+
})
324+
const result = purgecss.purge()[0].css
325+
expect(result.includes('parent2')).toBe(false)
326+
})
327+
})
328+
329+
})

0 commit comments

Comments
 (0)