aboutsummaryrefslogtreecommitdiffstats
path: root/test/bem/_iro-bem-multi.scss
diff options
context:
space:
mode:
Diffstat (limited to 'test/bem/_iro-bem-multi.scss')
-rw-r--r--test/bem/_iro-bem-multi.scss591
1 files changed, 591 insertions, 0 deletions
diff --git a/test/bem/_iro-bem-multi.scss b/test/bem/_iro-bem-multi.scss
new file mode 100644
index 0000000..84bbca2
--- /dev/null
+++ b/test/bem/_iro-bem-multi.scss
@@ -0,0 +1,591 @@
1// sass-lint:disable class-name-format force-element-nesting force-pseudo-nesting mixins-before-declarations
2
3//
4// Included test cases:
5// - /// 1 /// - in root, 2 blocks
6// - /// 2 /// - in root, 1 block, 1 manual selector
7// - /// 3 /// - in block, 2 elements
8// - /// 4 /// - in block, 1 element, 1 modifier
9// - /// 5 /// - in block, 1 element, 1 extending modifier
10// - /// 6 /// - in block, 1 element, 1 & selector
11// - /// 7 /// - in block, 1 element, 1 manual selector
12// - /// 8 /// - in element, 2 elements, 1 modifier
13// - /// 9 /// - in element, 1 element, 1 & selector
14// - /// 10 /// - in element in manual selector, 2 elements
15// - /// 11 /// - in element in manual selector, 1 element, 1 & selector
16// - /// 12 /// - in multiple elements, 2 elements, 1 modifier
17// - /// 13 /// - in multiple elements, 1 element, 1 & selector
18// - /// 14 /// - in related elements, 2 elements, 1 modifier
19// - /// 15 /// - in related elements, 1 element, 1 & selector
20// - /// 16 /// - in element, 2 related elements, 1 modifier
21// - /// 17 /// - in element, 1 twin element, 1 modifier
22// - /// 18 /// - in multiple elements, 1 twin element, 1 modifier
23//
24
25@include it('iro-bem-state') {
26 @include assert('in root, 2 blocks') { /// 1 ///
27 @include output {
28 @include iro-bem-multi('component:' 'block1', 'object:' 'block2') {
29 font-size: 1em;
30
31 @include iro-bem-element('child2') {
32 font-size: 2em;
33 }
34 }
35 }
36
37 @include expect {
38 .c-block1 {
39 font-size: 1em;
40 }
41
42 .c-block1__child2 {
43 font-size: 2em;
44 }
45
46 .o-block2 {
47 font-size: 1em;
48 }
49
50 .o-block2__child2 {
51 font-size: 2em;
52 }
53 }
54 }
55
56 @include assert('in root, 1 block, 1 manual selector') { /// 2 ///
57 @include output {
58 @include iro-bem-multi('component:' 'block1', 'a:hover') {
59 font-size: 1em;
60 }
61 }
62
63 @include expect {
64 .c-block1 {
65 font-size: 1em;
66 }
67
68 a:hover {
69 font-size: 1em;
70 }
71 }
72 }
73
74 @include assert('in block, 2 elements') { /// 3 ///
75 @include output {
76 @include iro-bem-block('something') {
77 @include iro-bem-multi('element:' 'child1' 'child2') {
78 font-size: 2em;
79
80 @include iro-bem-modifier('mod') {
81 font-size: 2.5em;
82 }
83 }
84 }
85 }
86
87 @include expect {
88 .something__child1,
89 .something__child2 {
90 font-size: 2em;
91 }
92
93 .something__child1--mod,
94 .something__child2--mod {
95 font-size: 2.5em;
96 }
97 }
98 }
99
100 @include assert('in block, 1 element, 1 modifier') { /// 4 ///
101 @include output {
102 @include iro-bem-block('something') {
103 @include iro-bem-multi('element:' 'child', 'modifier:' 'mod1') {
104 font-size: 2em;
105
106 @include iro-bem-modifier('mod2') {
107 font-size: 2.5em;
108 }
109 }
110 }
111 }
112
113 @include expect {
114 .something__child {
115 font-size: 2em;
116 }
117
118 .something__child--mod2 {
119 font-size: 2.5em;
120 }
121
122 .something--mod1 {
123 font-size: 2em;
124 }
125
126 .something--mod1.something--mod2 {
127 font-size: 2.5em;
128 }
129 }
130 }
131
132 @include assert('in block, 1 element, 1 extending modifier') { /// 5 ///
133 @include output {
134 @include iro-bem-block('something') {
135 @include iro-bem-multi('element:' 'child', 'modifier:' 'mod1') {
136 font-size: 2em;
137
138 @include iro-bem-modifier('mod2' true) {
139 font-size: 2.5em;
140 }
141 }
142 }
143 }
144
145 @include expect {
146 .something__child {
147 font-size: 2em;
148 }
149
150 .something__child--mod2 {
151 font-size: 2.5em;
152 }
153
154 .something--mod1 {
155 font-size: 2em;
156 }
157
158 .something--mod1--mod2 {
159 font-size: 2.5em;
160 }
161 }
162 }
163
164 @include assert('in block, 1 element, 1 & selector') { /// 6 ///
165 @include output {
166 @include iro-bem-block('something') {
167 @include iro-bem-multi('&', 'element:' 'child') {
168 font-size: 2em;
169
170 @include iro-bem-modifier('mod') {
171 font-size: 2.5em;
172 }
173 }
174 }
175 }
176
177 @include expect {
178 .something {
179 font-size: 2em;
180 }
181
182 .something--mod {
183 font-size: 2.5em;
184 }
185
186 .something__child {
187 font-size: 2em;
188 }
189
190 .something__child--mod {
191 font-size: 2.5em;
192 }
193 }
194 }
195
196 @include assert('in block, 1 element, 1 manual selector') { /// 7 ///
197 @include output {
198 @include iro-bem-block('something') {
199 @include iro-bem-multi('> a:hover', 'element:' 'child1') {
200 font-size: 2em;
201
202 @include iro-bem-element('child2') {
203 font-size: 3em;
204 }
205 }
206 }
207 }
208
209 @include expect {
210 .something > a:hover {
211 font-size: 2em;
212 }
213
214 .something > a:hover .something__child2 {
215 font-size: 3em;
216 }
217
218 .something__child1 {
219 font-size: 2em;
220 }
221
222 .something__child1 .something__child2 {
223 font-size: 3em;
224 }
225 }
226 }
227
228 @include assert('in element, 2 elements, 1 modifier') { /// 8 ///
229 @include output {
230 @include iro-bem-block('something') {
231 @include iro-bem-element('child') {
232 @include iro-bem-multi('element:' 'subchild1' 'subchild2', 'modifier:' 'mod1') {
233 font-size: 3em;
234
235 @include iro-bem-modifier('mod2') {
236 font-size: 3.5em;
237 }
238 }
239 }
240 }
241 }
242
243 @include expect {
244 .something__child .something__subchild1,
245 .something__child .something__subchild2 {
246 font-size: 3em;
247 }
248
249 .something__child .something__subchild1--mod2,
250 .something__child .something__subchild2--mod2 {
251 font-size: 3.5em;
252 }
253
254 .something__child--mod1 {
255 font-size: 3em;
256 }
257
258 .something__child--mod1.something__child--mod2 {
259 font-size: 3.5em;
260 }
261 }
262 }
263
264 @include assert('in element, 1 element, 1 & selector') { /// 9 ///
265 @include output {
266 @include iro-bem-block('something') {
267 @include iro-bem-element('child') {
268 @include iro-bem-multi('element:' 'subchild', '&') {
269 font-size: 3em;
270
271 @include iro-bem-modifier('mod') {
272 font-size: 3.5em;
273 }
274 }
275 }
276 }
277 }
278
279 @include expect {
280 .something__child .something__subchild {
281 font-size: 3em;
282 }
283
284 .something__child .something__subchild--mod {
285 font-size: 3.5em;
286 }
287
288 .something__child {
289 font-size: 3em;
290 }
291
292 .something__child--mod {
293 font-size: 3.5em;
294 }
295 }
296 }
297
298 @include assert('in element in manual selector, 2 elements') { /// 10 ///
299 @include output {
300 @include iro-bem-block('something') {
301 @include iro-bem-element('child') {
302 &:hover {
303 @include iro-bem-multi('element:' 'subchild1' 'subchild2') {
304 font-size: 3em;
305
306 @include iro-bem-modifier('mod2') {
307 font-size: 3.5em;
308 }
309 }
310 }
311 }
312 }
313 }
314
315 @include expect {
316 .something__child:hover .something__subchild1,
317 .something__child:hover .something__subchild2 {
318 font-size: 3em;
319 }
320
321 .something__child:hover .something__subchild1--mod2,
322 .something__child:hover .something__subchild2--mod2 {
323 font-size: 3.5em;
324 }
325 }
326 }
327
328 @include assert('in element in manual selector, 1 element, 1 & selector') { /// 11 ///
329 @include output {
330 @include iro-bem-block('something') {
331 @include iro-bem-element('child') {
332 &:hover {
333 @include iro-bem-multi('element:' 'subchild', '&') {
334 font-size: 3em;
335 }
336 }
337 }
338 }
339 }
340
341 @include expect {
342 .something__child:hover .something__subchild {
343 font-size: 3em;
344 }
345
346 .something__child:hover {
347 font-size: 3em;
348 }
349 }
350 }
351
352 @include assert('in multiple elements, 2 elements, 1 modifier') { /// 12 ///
353 @include output {
354 @include iro-bem-block('something') {
355 @include iro-bem-element('child1', 'child2') {
356 @include iro-bem-multi('element:' 'subchild1' 'subchild2', 'modifier:' 'mod') {
357 font-size: 3em;
358 }
359 }
360 }
361 }
362
363 @include expect {
364 .something__child1 .something__subchild1,
365 .something__child2 .something__subchild1,
366 .something__child1 .something__subchild2,
367 .something__child2 .something__subchild2 {
368 font-size: 3em;
369 }
370
371 .something__child1--mod,
372 .something__child2--mod {
373 font-size: 3em;
374 }
375 }
376 }
377
378 @include assert('in multiple elements, 1 element, 1 & selector') { /// 13 ///
379 @include output {
380 @include iro-bem-block('something') {
381 @include iro-bem-element('child1', 'child2') {
382 @include iro-bem-multi('element:' 'subchild', '&') {
383 font-size: 3em;
384
385 @include iro-bem-modifier('mod') {
386 font-size: 3.5em;
387 }
388 }
389 }
390 }
391 }
392
393 @include expect {
394 .something__child1 .something__subchild,
395 .something__child2 .something__subchild {
396 font-size: 3em;
397 }
398
399 .something__child1 .something__subchild--mod,
400 .something__child2 .something__subchild--mod {
401 font-size: 3.5em;
402 }
403
404 .something__child1,
405 .something__child2 {
406 font-size: 3em;
407 }
408
409 .something__child1--mod,
410 .something__child2--mod {
411 font-size: 3.5em;
412 }
413 }
414 }
415
416 @include assert('in related elements, 2 elements, 1 modifier') { /// 14 ///
417 @include output {
418 @include iro-bem-block('something') {
419 @include iro-bem-element('child1') {
420 @include iro-bem-next-element('child2', 'child3') {
421 @include iro-bem-multi('element:' 'subchild1' 'subchild2', 'modifier:' 'mod') {
422 font-size: 3em;
423 }
424 }
425 }
426 }
427 }
428
429 @include expect {
430 .something__child1 + .something__child2 .something__subchild1,
431 .something__child1 + .something__child3 .something__subchild1,
432 .something__child1 + .something__child2 .something__subchild2,
433 .something__child1 + .something__child3 .something__subchild2 {
434 font-size: 3em;
435 }
436
437 .something__child1 + .something__child2--mod,
438 .something__child1 + .something__child3--mod {
439 font-size: 3em;
440 }
441 }
442 }
443
444 @include assert('in related elements, 1 element, 1 & selector') { /// 15 ///
445 @include output {
446 @include iro-bem-block('something') {
447 @include iro-bem-element('child1') {
448 @include iro-bem-next-element('child2', 'child3') {
449 @include iro-bem-multi('element:' 'subchild', '&') {
450 font-size: 4em;
451
452 @include iro-bem-modifier('mod') {
453 font-size: 4.5em;
454 }
455 }
456 }
457 }
458 }
459 }
460
461 @include expect {
462 .something__child1 + .something__child2 .something__subchild,
463 .something__child1 + .something__child3 .something__subchild {
464 font-size: 4em;
465 }
466
467 .something__child1 + .something__child2 .something__subchild--mod,
468 .something__child1 + .something__child3 .something__subchild--mod {
469 font-size: 4.5em;
470 }
471
472 .something__child1 + .something__child2,
473 .something__child1 + .something__child3 {
474 font-size: 4em;
475 }
476
477 .something__child1 + .something__child2--mod,
478 .something__child1 + .something__child3--mod {
479 font-size: 4.5em;
480 }
481 }
482 }
483
484 @include assert('in element, 2 related elements, 1 modifier') { /// 16 ///
485 @include output {
486 @include iro-bem-block('something') {
487 @include iro-bem-element('child1') {
488 @include iro-bem-multi('next-element:' 'child2' 'child3', 'modifier:' 'mod1') {
489 font-size: 3em;
490
491 @include iro-bem-modifier('mod2') {
492 font-size: 3.5em;
493 }
494 }
495 }
496 }
497 }
498
499 @include expect {
500 .something__child1 + .something__child2,
501 .something__child1 + .something__child3 {
502 font-size: 3em;
503 }
504
505 .something__child1 + .something__child2--mod2,
506 .something__child1 + .something__child3--mod2 {
507 font-size: 3.5em;
508 }
509
510 .something__child1--mod1 {
511 font-size: 3em;
512 }
513
514 .something__child1--mod1.something__child1--mod2 {
515 font-size: 3.5em;
516 }
517 }
518 }
519
520 @include assert('in element, 1 twin element, 1 modifier') { /// 17 ///
521 @include output {
522 @include iro-bem-block('something') {
523 @include iro-bem-element('child') {
524 @include iro-bem-multi('next-twin-element', 'modifier:' 'mod1') {
525 font-size: 3em;
526
527 @include iro-bem-modifier('mod2') {
528 font-size: 3.5em;
529 }
530 }
531 }
532 }
533 }
534
535 @include expect {
536 .something__child + .something__child {
537 font-size: 3em;
538 }
539
540 .something__child + .something__child--mod2 {
541 font-size: 3.5em;
542 }
543
544 .something__child--mod1 {
545 font-size: 3em;
546 }
547
548 .something__child--mod1.something__child--mod2 {
549 font-size: 3.5em;
550 }
551 }
552 }
553
554 @include assert('in multiple elements, 1 twin element, 1 modifier') { /// 18 ///
555 @include output {
556 @include iro-bem-block('something') {
557 @include iro-bem-element('child1', 'child2') {
558 @include iro-bem-multi('next-twin-element', 'modifier:' 'mod1') {
559 font-size: 3em;
560
561 @include iro-bem-modifier('mod2') {
562 font-size: 3.5em;
563 }
564 }
565 }
566 }
567 }
568
569 @include expect {
570 .something__child1 + .something__child1,
571 .something__child2 + .something__child2 {
572 font-size: 3em;
573 }
574
575 .something__child1 + .something__child1--mod2,
576 .something__child2 + .something__child2--mod2 {
577 font-size: 3.5em;
578 }
579
580 .something__child1--mod1,
581 .something__child2--mod1 {
582 font-size: 3em;
583 }
584
585 .something__child1--mod1.something__child1--mod2,
586 .something__child2--mod1.something__child2--mod2 {
587 font-size: 3.5em;
588 }
589 }
590 }
591}