source: trip-planner-front/node_modules/postcss-selector-parser/dist/__tests__/container.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 12.6 KB
Line 
1"use strict";
2
3var _ava = _interopRequireDefault(require("ava"));
4
5var _ = _interopRequireDefault(require(".."));
6
7var _helpers = require("./util/helpers");
8
9function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
11(0, _ava["default"])('container#append', function (t) {
12 var out = (0, _helpers.parse)('h1', function (selectors) {
13 var selector = selectors.first;
14 var clone = selector.first.clone({
15 value: 'h2'
16 });
17 selectors.append(clone);
18 });
19 t.deepEqual(out, 'h1,h2');
20});
21(0, _ava["default"])('container#prepend', function (t) {
22 var out = (0, _helpers.parse)('h2', function (selectors) {
23 var selector = selectors.first;
24 var clone = selector.first.clone({
25 value: 'h1'
26 });
27 selectors.prepend(clone);
28 });
29 t.deepEqual(out, 'h1,h2');
30});
31(0, _ava["default"])('container#each', function (t) {
32 var str = '';
33 (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
34 selectors.each(function (selector) {
35 if (selector.first.type === 'tag') {
36 str += selector.first.value;
37 }
38 });
39 });
40 t.deepEqual(str, 'h1h2');
41});
42(0, _ava["default"])('container#each (safe iteration)', function (t) {
43 var out = (0, _helpers.parse)('.x, .y', function (selectors) {
44 selectors.each(function (selector) {
45 selector.parent.insertBefore(selector, _["default"].className({
46 value: 'b'
47 }));
48 selector.parent.insertAfter(selector, _["default"].className({
49 value: 'a'
50 }));
51 });
52 });
53 t.deepEqual(out, '.b,.x,.a,.b, .y,.a');
54});
55(0, _ava["default"])('container#each (early exit)', function (t) {
56 var str = '';
57 (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
58 var eachReturn = selectors.each(function (selector) {
59 var tag = selector.first.value;
60 str += tag;
61 return tag !== 'h2';
62 });
63 t["false"](eachReturn);
64 });
65 t.deepEqual(str, 'h1h2');
66});
67(0, _ava["default"])('container#walk', function (t) {
68 var str = '';
69 (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
70 selectors.walk(function (selector) {
71 if (selector.type === 'tag') {
72 str += selector.value;
73 }
74 });
75 });
76 t.deepEqual(str, 'h1h2h3h4');
77});
78(0, _ava["default"])('container#walk (safe iteration)', function (t) {
79 var out = (0, _helpers.parse)('[class] + *[href] *:not(*.green)', function (selectors) {
80 selectors.walkUniversals(function (selector) {
81 var next = selector.next();
82
83 if (next && next.type !== 'combinator') {
84 selector.remove();
85 }
86 });
87 });
88 t.deepEqual(out, '[class] + [href] :not(.green)');
89});
90(0, _ava["default"])('container#walk (early exit)', function (t) {
91 var str = '';
92 (0, _helpers.parse)('h1, h2:not(h3, h4)', function (selectors) {
93 var walkReturn = selectors.walk(function (selector) {
94 if (selector.type === 'tag') {
95 var tag = selector.value;
96 str += tag;
97 return tag !== 'h3';
98 }
99 });
100 t["false"](walkReturn);
101 });
102 t.deepEqual(str, 'h1h2h3');
103});
104(0, _ava["default"])('container#walkAttribute', function (t) {
105 var out = (0, _helpers.parse)('[href][class].class', function (selectors) {
106 selectors.walkAttributes(function (attr) {
107 if (attr.attribute === 'class') {
108 attr.remove();
109 }
110 });
111 });
112 t.deepEqual(out, '[href].class');
113});
114(0, _ava["default"])('container#walkClass', function (t) {
115 var out = (0, _helpers.parse)('.one, .two, .three:not(.four, .five)', function (selectors) {
116 selectors.walkClasses(function (className) {
117 className.value = className.value.slice(0, 1);
118 });
119 });
120 t.deepEqual(out, '.o, .t, .t:not(.f, .f)');
121});
122(0, _ava["default"])('container#walkCombinator', function (t) {
123 var out = (0, _helpers.parse)('h1 h2 h3 h4', function (selectors) {
124 selectors.walkCombinators(function (comment) {
125 comment.remove();
126 });
127 });
128 t.deepEqual(out, 'h1h2h3h4');
129});
130(0, _ava["default"])('container#walkComment', function (t) {
131 var out = (0, _helpers.parse)('.one/*test*/.two', function (selectors) {
132 selectors.walkComments(function (comment) {
133 comment.remove();
134 });
135 });
136 t.deepEqual(out, '.one.two');
137});
138(0, _ava["default"])('container#walkId', function (t) {
139 var out = (0, _helpers.parse)('h1#one, h2#two', function (selectors) {
140 selectors.walkIds(function (id) {
141 id.value = id.value.slice(0, 1);
142 });
143 });
144 t.deepEqual(out, 'h1#o, h2#t');
145});
146(0, _ava["default"])('container#walkNesting', function (t) {
147 var out = (0, _helpers.parse)('& h1', function (selectors) {
148 selectors.walkNesting(function (node) {
149 node.replaceWith(_["default"].tag({
150 value: 'body'
151 }));
152 });
153 });
154 t.deepEqual(out, 'body h1');
155});
156(0, _ava["default"])('container#walkPseudo', function (t) {
157 var out = (0, _helpers.parse)('a:before, a:after', function (selectors) {
158 selectors.walkPseudos(function (pseudo) {
159 pseudo.value = pseudo.value.slice(0, 2);
160 });
161 });
162 t.deepEqual(out, 'a:b, a:a');
163});
164(0, _ava["default"])('container#walkTag', function (t) {
165 var out = (0, _helpers.parse)('1 2 3', function (selectors) {
166 selectors.walkTags(function (tag) {
167 tag.value = 'h' + tag.value;
168 });
169 });
170 t.deepEqual(out, 'h1 h2 h3');
171});
172(0, _ava["default"])('container#walkUniversal', function (t) {
173 var out = (0, _helpers.parse)('*.class,*.class,*.class', function (selectors) {
174 selectors.walkUniversals(function (universal) {
175 universal.remove();
176 });
177 });
178 t.deepEqual(out, '.class,.class,.class');
179});
180(0, _ava["default"])('container#map', function (t) {
181 (0, _helpers.parse)('1 2 3', function (selectors) {
182 var arr = selectors.first.map(function (selector) {
183 if (/[0-9]/.test(selector.value)) {
184 return 'h' + selector.value;
185 }
186
187 return selector.value;
188 });
189 t.deepEqual(arr, ['h1', ' ', 'h2', ' ', 'h3']);
190 });
191});
192(0, _ava["default"])('container#every', function (t) {
193 (0, _helpers.parse)('.one.two.three', function (selectors) {
194 var allClasses = selectors.first.every(function (selector) {
195 return selector.type === 'class';
196 });
197 t.truthy(allClasses);
198 });
199});
200(0, _ava["default"])('container#some', function (t) {
201 (0, _helpers.parse)('one#two.three', function (selectors) {
202 var someClasses = selectors.first.some(function (selector) {
203 return selector.type === 'class';
204 });
205 t.truthy(someClasses);
206 });
207});
208(0, _ava["default"])('container#reduce', function (t) {
209 (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
210 var str = selectors.reduce(function (memo, selector) {
211 if (selector.first.type === 'tag') {
212 memo += selector.first.value;
213 }
214
215 return memo;
216 }, '');
217 t.deepEqual(str, 'h1h2h3h4');
218 });
219});
220(0, _ava["default"])('container#filter', function (t) {
221 (0, _helpers.parse)('h1, h2, c1, c2', function (selectors) {
222 var ast = selectors.filter(function (selector) {
223 return ~selector.first.value.indexOf('h');
224 });
225 t.deepEqual(String(ast), 'h1, h2');
226 });
227});
228(0, _ava["default"])('container#split', function (t) {
229 (0, _helpers.parse)('h1 h2 >> h3', function (selectors) {
230 var list = selectors.first.split(function (selector) {
231 return selector.value === '>>';
232 }).map(function (group) {
233 return group.map(String);
234 });
235 t.deepEqual(list, [['h1', ' ', 'h2', ' >> '], ['h3']]);
236 t.deepEqual(list.length, 2);
237 });
238});
239(0, _ava["default"])('container#sort', function (t) {
240 var out = (0, _helpers.parse)('h2,h3,h1,h4', function (selectors) {
241 selectors.sort(function (a, b) {
242 return a.first.value.slice(-1) - b.first.value.slice(-1);
243 });
244 });
245 t.deepEqual(out, 'h1,h2,h3,h4');
246});
247(0, _ava["default"])('container#at', function (t) {
248 (0, _helpers.parse)('h1, h2, h3', function (selectors) {
249 t.deepEqual(selectors.at(1).first.value, 'h2');
250 });
251});
252(0, _ava["default"])('container#first, container#last', function (t) {
253 (0, _helpers.parse)('h1, h2, h3, h4', function (selectors) {
254 t.deepEqual(selectors.first.first.value, 'h1');
255 t.deepEqual(selectors.last.last.value, 'h4');
256 });
257});
258(0, _ava["default"])('container#index', function (t) {
259 (0, _helpers.parse)('h1 h2 h3', function (selectors) {
260 var middle = selectors.first.at(1);
261 t.deepEqual(selectors.first.index(middle), 1);
262 });
263});
264(0, _ava["default"])('container#length', function (t) {
265 (0, _helpers.parse)('h1, h2, h3', function (selectors) {
266 t.deepEqual(selectors.length, 3);
267 });
268});
269(0, _ava["default"])('container#removeChild', function (t) {
270 var out = (0, _helpers.parse)('h1.class h2.class h3.class', function (selectors) {
271 selectors.walk(function (selector) {
272 if (selector.type === 'class') {
273 selector.parent.removeChild(selector);
274 }
275 });
276 });
277 t.deepEqual(out, 'h1 h2 h3');
278});
279(0, _ava["default"])('container#removeAll, container#empty', function (t) {
280 var wipe = function wipe(method) {
281 return function (selectors) {
282 return selectors[method]();
283 };
284 };
285
286 var out1 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('empty'));
287 var out2 = (0, _helpers.parse)('h1 h2, h2 h3, h3 h4', wipe('removeAll'));
288 t.deepEqual(out1, '');
289 t.deepEqual(out2, '');
290});
291(0, _ava["default"])('container#insertBefore', function (t) {
292 var out = (0, _helpers.parse)('h2', function (selectors) {
293 var selector = selectors.first;
294 var clone = selector.first.clone({
295 value: 'h1'
296 });
297 selectors.insertBefore(selector, clone);
298 });
299 t.deepEqual(out, 'h1,h2');
300});
301(0, _ava["default"])('container#insertBefore and node#remove', function (t) {
302 var out = (0, _helpers.parse)('h2', function (selectors) {
303 var selector = selectors.first;
304
305 var newSel = _["default"].tag({
306 value: 'h1'
307 });
308
309 selectors.insertBefore(selector, newSel);
310 newSel.remove();
311 });
312 t.deepEqual(out, 'h2');
313});
314(0, _ava["default"])('container#insertAfter', function (t) {
315 var out = (0, _helpers.parse)('h1', function (selectors) {
316 var selector = selectors.first;
317 var clone = selector.first.clone({
318 value: 'h2'
319 });
320 selectors.insertAfter(selector, clone);
321 });
322 t.deepEqual(out, 'h1,h2');
323});
324(0, _ava["default"])('container#insertAfter and node#remove', function (t) {
325 var out = (0, _helpers.parse)('h2', function (selectors) {
326 var selector = selectors.first;
327
328 var newSel = _["default"].tag({
329 value: 'h1'
330 });
331
332 selectors.insertAfter(selector, newSel);
333 newSel.remove();
334 });
335 t.deepEqual(out, 'h2');
336});
337(0, _ava["default"])('container#insertAfter (during iteration)', function (t) {
338 var out = (0, _helpers.parse)('h1, h2, h3', function (selectors) {
339 selectors.walkTags(function (selector) {
340 var attribute = _["default"].attribute({
341 attribute: 'class'
342 });
343
344 selector.parent.insertAfter(selector, attribute);
345 });
346 });
347 t.deepEqual(out, 'h1[class], h2[class], h3[class]');
348});
349(0, _ava["default"])('Container#atPosition first pseudo', function (t) {
350 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
351 var node = root.atPosition(1, 1);
352 t.deepEqual(node.type, "pseudo");
353 t.deepEqual(node.toString(), ":not(.foo)");
354 });
355});
356(0, _ava["default"])('Container#atPosition class in pseudo', function (t) {
357 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
358 var node = root.atPosition(1, 6);
359 t.deepEqual(node.type, "class");
360 t.deepEqual(node.toString(), ".foo");
361 });
362});
363(0, _ava["default"])('Container#atPosition id in second selector', function (t) {
364 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
365 var node = root.atPosition(2, 1);
366 t.deepEqual(node.type, "id");
367 t.deepEqual(node.toString(), "\n#foo");
368 });
369});
370(0, _ava["default"])('Container#atPosition combinator in second selector', function (t) {
371 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
372 var node = root.atPosition(2, 6);
373 t.deepEqual(node.type, "combinator");
374 t.deepEqual(node.toString(), " > ");
375 var nodeSpace = root.atPosition(2, 5);
376 t.deepEqual(nodeSpace.type, "selector");
377 t.deepEqual(nodeSpace.toString(), "\n#foo > :matches(ol, ul)");
378 });
379});
380(0, _ava["default"])('Container#atPosition tag in second selector pseudo', function (t) {
381 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
382 var node = root.atPosition(2, 17);
383 t.deepEqual(node.type, "tag");
384 t.deepEqual(node.toString(), "ol");
385 });
386});
387(0, _ava["default"])('Container#atPosition comma in second selector pseudo', function (t) {
388 (0, _helpers.parse)(':not(.foo),\n#foo > :matches(ol, ul)', function (root) {
389 var node = root.atPosition(2, 19);
390 t.deepEqual(node.type, "pseudo");
391 t.deepEqual(node.toString(), ":matches(ol, ul)");
392 });
393});
Note: See TracBrowser for help on using the repository browser.