Skip to content

Commit eede6bf

Browse files
committed
Adds test for multi-nested with custom style
1 parent 3f6ae03 commit eede6bf

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

test/Builder/CliMenuBuilderTest.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ public function testSubMenuInheritsParentsStyle() : void
583583
->expects($this->any())
584584
->method('getWidth')
585585
->will($this->returnValue(200));
586-
586+
587587
$menu = (new CliMenuBuilder($terminal))
588588
->setBackgroundColour('green')
589589
->addSubMenu('My SubMenu', function (CliMenuBuilder $b) {
@@ -594,7 +594,9 @@ public function testSubMenuInheritsParentsStyle() : void
594594
})
595595
->build();
596596

597+
/** @var CliMenu $subMenu1 */
597598
$subMenu1 = $menu->getItems()[0]->getSubMenu();
599+
/** @var CliMenu $subMenu2 */
598600
$subMenu2 = $subMenu1->getItems()[0]->getSubMenu();
599601

600602
self::assertSame('green', $subMenu1->getStyle()->getBg());
@@ -604,6 +606,35 @@ public function testSubMenuInheritsParentsStyle() : void
604606
self::assertEquals($menu->getStyle(), $subMenu2->getStyle());
605607
}
606608

609+
public function testSubMenuIgnoresParentsStyleIfCustomAndPassesToChildren() : void
610+
{
611+
$terminal = self::createMock(Terminal::class);
612+
$terminal
613+
->expects($this->any())
614+
->method('getWidth')
615+
->will($this->returnValue(200));
616+
617+
$menu = (new CliMenuBuilder($terminal))
618+
->setBackgroundColour('green')
619+
->addSubMenu('My SubMenu', function (CliMenuBuilder $b) {
620+
$b->setBackgroundColour('yellow')
621+
->addSubMenu('My SubSubMenu', function (CliMenuBuilder $b) {
622+
$b->addItem('Some Item', function () {
623+
});
624+
});
625+
})
626+
->build();
627+
628+
/** @var CliMenu $subMenu1 */
629+
$subMenu1 = $menu->getItems()[0]->getSubMenu();
630+
/** @var CliMenu $subMenu2 */
631+
$subMenu2 = $subMenu1->getItems()[0]->getSubMenu();
632+
633+
self::assertSame('green', $menu->getStyle()->getBg());
634+
self::assertSame('yellow', $subMenu1->getStyle()->getBg());
635+
self::assertSame('yellow', $subMenu2->getStyle()->getBg());
636+
}
637+
607638
public function testSubMenuDoesNotInheritsParentsStyleWhenSubMenuStyleHasAlterations() : void
608639
{
609640
$menu = (new CliMenuBuilder)

0 commit comments

Comments
 (0)