|
11 | 11 | use PhpSchool\CliMenu\MenuItem\MenuMenuItem;
|
12 | 12 | use PhpSchool\CliMenu\MenuItem\RadioItem;
|
13 | 13 | use PhpSchool\CliMenu\MenuItem\SelectableItem;
|
| 14 | +use PhpSchool\CliMenu\MenuItem\SplitItem; |
14 | 15 | use PhpSchool\CliMenu\MenuItem\StaticItem;
|
15 | 16 | use PhpSchool\Terminal\Terminal;
|
16 | 17 | use PHPUnit\Framework\TestCase;
|
@@ -606,6 +607,37 @@ public function testSubMenuInheritsParentsStyle() : void
|
606 | 607 | self::assertEquals($menu->getStyle(), $subMenu2->getStyle());
|
607 | 608 | }
|
608 | 609 |
|
| 610 | + public function testSplitItemSubMenuInheritsParentsStyle() : void |
| 611 | + { |
| 612 | + $terminal = self::createMock(Terminal::class); |
| 613 | + $terminal |
| 614 | + ->expects($this->any()) |
| 615 | + ->method('getWidth') |
| 616 | + ->will($this->returnValue(200)); |
| 617 | + |
| 618 | + $menu = (new CliMenuBuilder($terminal)) |
| 619 | + ->setBackgroundColour('green') |
| 620 | + ->addSplitItem(function (SplitItemBuilder $b) { |
| 621 | + $b |
| 622 | + ->addItem('Item 1', function () {}) |
| 623 | + ->addSubMenu('Submenu 1', function (CliMenuBuilder $b) { |
| 624 | + $b->addItem('Item 2', function () {}); |
| 625 | + }) |
| 626 | + ; |
| 627 | + }) |
| 628 | + ->build(); |
| 629 | + |
| 630 | + /** @var SplitItem $splitItem */ |
| 631 | + $splitItem = $menu->getItems()[0]; |
| 632 | + /** @var SelectableItem $selectableItem1 */ |
| 633 | + $selectableItem1 = $splitItem->getItems()[0]; |
| 634 | + /** @var CliMenu $subMenu */ |
| 635 | + $subMenu = $splitItem->getItems()[1]->getSubMenu(); |
| 636 | + |
| 637 | + self::assertSame('green', $subMenu->getStyle()->getBg()); |
| 638 | + self::assertEquals($menu->getStyle(), $subMenu->getStyle()); |
| 639 | + } |
| 640 | + |
609 | 641 | public function testSubMenuIgnoresParentsStyleIfCustomAndPassesToChildren() : void
|
610 | 642 | {
|
611 | 643 | $terminal = self::createMock(Terminal::class);
|
|
0 commit comments