From d07f664450ddaaebb44127a4bd057763d13d3f82 Mon Sep 17 00:00:00 2001 From: Feuerfuchs Date: Sun, 1 Nov 2020 20:55:14 +0100 Subject: Init --- test/bem/_iro-bem-modifier.scss | 654 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 654 insertions(+) create mode 100644 test/bem/_iro-bem-modifier.scss (limited to 'test/bem/_iro-bem-modifier.scss') diff --git a/test/bem/_iro-bem-modifier.scss b/test/bem/_iro-bem-modifier.scss new file mode 100644 index 0000000..60e2fe4 --- /dev/null +++ b/test/bem/_iro-bem-modifier.scss @@ -0,0 +1,654 @@ +// sass-lint:disable class-name-format force-element-nesting force-pseudo-nesting mixins-before-declarations + +// +// Included test cases: +// - /// 1 /// - block modifier +// - /// 2 /// - block modifier, in at-theme +// - /// 3 /// - element modifier, single element +// - /// 4 /// - element modifier, multiple elements +// - /// 5 /// - element modifier, single related element +// - /// 6 /// - element modifier, multiple related elements +// - /// 7 /// - element modifier, single element, manual selector before +// - /// 8 /// - element modifier, multiple elements, manual selector before +// - /// 9 /// - element modifier, single related element, manual selector before +// - /// 10 /// - element modifier, multiple related elements, manual selector before +// - /// 11 /// - element modifier, in at-theme +// - /// 12 /// - nested block modifiers, extending +// - /// 13 /// - nested element modifiers, extending +// - /// 14 /// - block and element modifiers, single element +// - /// 15 /// - block and element modifiers, multiple elements +// + +@include it('iro-bem-modifier') { + @include assert('block modifier') { /// 1 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-modifier('mod') { + font-size: 1.5em; + + @include iro-bem-modifier('submod') { + font-size: 1.75em; + } + } + } + } + + @include expect { + .something--mod { + font-size: 1.5em; + } + + .something--mod.something--submod { + font-size: 1.75em; + } + } + } + + @include assert('block modifier, in at-theme') { /// 2 /// + @include output(false) { + @include iro-bem-block('something') { + @include iro-bem-at-theme('dark') { + @include iro-bem-modifier('mod') { + font-size: 1.5em; + + @include iro-bem-modifier('submod') { + font-size: 1.75em; + } + } + } + } + } + + @include expect(false) { + .t-dark .something--mod, + [class*=' t-'] .t-dark .something--mod, + [class^='t-'] .t-dark .something--mod { + font-size: 1.5em; + } + + .t-dark .something--mod.something--submod, + [class*=' t-'] .t-dark .something--mod.something--submod, + [class^='t-'] .t-dark .something--mod.something--submod { + font-size: 1.75em; + } + } + } + + @include assert('element modifier, single element') { /// 3 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-element('child') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + + @include expect { + .something__child--mod { + font-size: 2.5em; + } + + .something__child--mod.something__child--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, multiple elements') { /// 4 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-element('child1', 'child2') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + + @include expect { + .something__child1--mod, + .something__child2--mod { + font-size: 2.5em; + } + + .something__child1--mod.something__child1--submod, + .something__child2--mod.something__child2--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, single related element') { /// 5 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-element('child1') { + @include iro-bem-next-element('child2') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect { + .something__child1 + .something__child2--mod { + font-size: 2.5em; + } + + .something__child1 + .something__child2--mod.something__child2--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, multiple related elements') { /// 6 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-element('child1') { + @include iro-bem-next-element('child2', 'child3') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect { + .something__child1 + .something__child2--mod, + .something__child1 + .something__child3--mod { + font-size: 2.5em; + } + + .something__child1 + .something__child2--mod.something__child2--submod, + .something__child1 + .something__child3--mod.something__child3--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, single element, manual selector before') { /// 7 /// + @include output(false) { + @include iro-bem-block('something') { + &:hover { + @include iro-bem-element('child1') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + + .test & { + @include iro-bem-element('child2') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect(false) { + .something:hover .something__child1--mod { + font-size: 2.5em; + } + + .something:hover .something__child1--mod.something__child1--submod { + font-size: 2.75em; + } + + .test .something__child2--mod { + font-size: 2.5em; + } + + .test .something__child2--mod.something__child2--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, multiple elements, manual selector before') { /// 8 /// + @include output(false) { + @include iro-bem-block('something') { + &:hover { + @include iro-bem-element('child1', 'child2') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + + .test & { + @include iro-bem-element('child3', 'child4') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect(false) { + .something:hover .something__child1--mod, + .something:hover .something__child2--mod { + font-size: 2.5em; + } + + .something:hover .something__child1--mod.something__child1--submod, + .something:hover .something__child2--mod.something__child2--submod { + font-size: 2.75em; + } + + .test .something__child3--mod, + .test .something__child4--mod { + font-size: 2.5em; + } + + .test .something__child3--mod.something__child3--submod, + .test .something__child4--mod.something__child4--submod { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, single related element, manual selector before') { /// 9 /// + @include output(false) { + @include iro-bem-block('something') { + &:hover { + @include iro-bem-element('child1') { + @include iro-bem-next-element('child2') { + @include iro-bem-modifier('mod1') { + font-size: 2.5em; + + @include iro-bem-modifier('submod1') { + font-size: 2.75em; + } + } + } + } + } + + .test & { + @include iro-bem-element('child3') { + @include iro-bem-next-element('child4') { + @include iro-bem-modifier('mod1') { + font-size: 2.5em; + + @include iro-bem-modifier('submod1') { + font-size: 2.75em; + } + } + } + } + } + + @include iro-bem-element('child5') { + &:hover { + @include iro-bem-next-element('child6') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + + .test & { + @include iro-bem-next-element('child7') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + } + } + } + + @include expect(false) { + .something:hover .something__child1 + .something__child2--mod1 { + font-size: 2.5em; + } + + .something:hover .something__child1 + .something__child2--mod1.something__child2--submod1 { + font-size: 2.75em; + } + + .test .something__child3 + .something__child4--mod1 { + font-size: 2.5em; + } + + .test .something__child3 + .something__child4--mod1.something__child4--submod1 { + font-size: 2.75em; + } + + .something__child5:hover + .something__child6--mod2 { + font-size: 2.5em; + } + + .something__child5:hover + .something__child6--mod2.something__child6--submod2 { + font-size: 2.75em; + } + + .test .something__child5 + .something__child7--mod2 { + font-size: 2.5em; + } + + .test .something__child5 + .something__child7--mod2.something__child7--submod2 { + font-size: 2.75em; + } + } + } + + @include assert('element modifier, multiple related elements, manual selector before') { /// 10 /// + @include output(false) { + @include iro-bem-block('something') { + &:hover { + @include iro-bem-element('child1') { + @include iro-bem-next-element('child2', 'child3') { + @include iro-bem-modifier('mod1') { + font-size: 2.5em; + + @include iro-bem-modifier('submod1') { + font-size: 2.75em; + } + } + } + } + } + + .test & { + @include iro-bem-element('child4') { + @include iro-bem-next-element('child5', 'child6') { + @include iro-bem-modifier('mod1') { + font-size: 2.5em; + + @include iro-bem-modifier('submod1') { + font-size: 2.75em; + } + } + } + } + } + + @include iro-bem-element('child7') { + &:hover { + @include iro-bem-next-element('child8', 'child9') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + + .test & { + @include iro-bem-next-element('child10', 'child11') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + } + } + } + + @include expect(false) { + .something:hover .something__child1 + .something__child2--mod1, + .something:hover .something__child1 + .something__child3--mod1 { + font-size: 2.5em; + } + + .something:hover .something__child1 + .something__child2--mod1.something__child2--submod1, + .something:hover .something__child1 + .something__child3--mod1.something__child3--submod1 { + font-size: 2.75em; + } + + .test .something__child4 + .something__child5--mod1, + .test .something__child4 + .something__child6--mod1 { + font-size: 2.5em; + } + + .test .something__child4 + .something__child5--mod1.something__child5--submod1, + .test .something__child4 + .something__child6--mod1.something__child6--submod1 { + font-size: 2.75em; + } + + .something__child7:hover + .something__child8--mod2, + .something__child7:hover + .something__child9--mod2 { + font-size: 2.5em; + } + + .something__child7:hover + .something__child8--mod2.something__child8--submod2, + .something__child7:hover + .something__child9--mod2.something__child9--submod2 { + font-size: 2.75em; + } + + .test .something__child7 + .something__child10--mod2, + .test .something__child7 + .something__child11--mod2 { + font-size: 2.5em; + } + + .test .something__child7 + .something__child10--mod2.something__child10--submod2, + .test .something__child7 + .something__child11--mod2.something__child11--submod2 { + font-size: 2.75em; + } + } + } + + /* + @include assert('element modifier, in at-theme') { /// 11 /// + @include output(false) { + @include iro-bem-block('something') { + @include iro-bem-at-theme('dark') { + @include iro-bem-element('child') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect(false) { + .t-dark .something__child--mod, + [class*=' t-'] .t-dark .something__child--mod, + [class^='t-'] .t-dark .something__child--mod { + font-size: 2.5em; + } + + .t-dark .something__child--mod.something__child--submod, + [class*=' t-'] .t-dark .something__child--mod.something__child--submod, + [class^='t-'] .t-dark .something__child--mod.something__child--submod { + font-size: 2.75em; + } + } + } + */ + + @include assert('nested block modifiers, extending') { /// 12 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-modifier('mod') { + font-size: 1.5em; + + @include iro-bem-modifier('submod' true) { + font-size: 1.75em; + } + } + } + } + + @include expect { + .something--mod { + font-size: 1.5em; + } + + .something--mod--submod { + font-size: 1.75em; + } + } + } + + @include assert('nested element modifiers, extending') { /// 13 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-element('child') { + @include iro-bem-modifier('mod') { + font-size: 2.5em; + + @include iro-bem-modifier('submod' true) { + font-size: 2.75em; + } + } + } + } + } + + @include expect { + .something__child--mod { + font-size: 2.5em; + } + + .something__child--mod--submod { + font-size: 2.75em; + } + } + } + + @include assert('block and element modifiers, single element') { /// 14 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-modifier('mod1') { + font-size: 1.5em; + + @include iro-bem-modifier('submod1') { + font-size: 1.75em; + } + + @include iro-bem-element('child') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect { + .something--mod1 { + font-size: 1.5em; + } + + .something--mod1.something--submod1 { + font-size: 1.75em; + } + + .something--mod1 .something__child--mod2 { + font-size: 2.5em; + } + + .something--mod1 .something__child--mod2.something__child--submod2 { + font-size: 2.75em; + } + } + } + + @include assert('block and element modifiers, multiple elements') { /// 15 /// + @include output { + @include iro-bem-block('something') { + @include iro-bem-modifier('mod1') { + font-size: 1.5em; + + @include iro-bem-modifier('submod') { + font-size: 1.75em; + } + + @include iro-bem-element('child1', 'child2') { + @include iro-bem-modifier('mod2') { + font-size: 2.5em; + + @include iro-bem-modifier('submod2') { + font-size: 2.75em; + } + } + } + } + } + } + + @include expect { + .something--mod1 { + font-size: 1.5em; + } + + .something--mod1.something--submod1 { + font-size: 1.75em; + } + + .something--mod1 .something__child1--mod2, + .something--mod1 .something__child2--mod2 { + font-size: 2.5em; + } + + .something--mod1 .something__child1--mod2.something__child1--submod2, + .something--mod1 .something__child2--mod2.something__child2--submod2 { + font-size: 2.75em; + } + } + } +} -- cgit v1.2.3-54-g00ecf