|
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;
|
@@ -583,17 +584,89 @@ public function testSubMenuInheritsParentsStyle() : void
|
583 | 584 | ->expects($this->any())
|
584 | 585 | ->method('getWidth')
|
585 | 586 | ->will($this->returnValue(200));
|
586 |
| - |
| 587 | + |
587 | 588 | $menu = (new CliMenuBuilder($terminal))
|
588 | 589 | ->setBackgroundColour('green')
|
589 | 590 | ->addSubMenu('My SubMenu', function (CliMenuBuilder $b) {
|
590 |
| - $b->addItem('Some Item', function () { |
| 591 | + $b->addSubMenu('My SubSubMenu', function (CliMenuBuilder $b) { |
| 592 | + $b->addItem('Some Item', function () { |
| 593 | + }); |
591 | 594 | });
|
592 | 595 | })
|
593 | 596 | ->build();
|
594 | 597 |
|
595 |
| - self::assertSame('green', $menu->getItems()[0]->getSubMenu()->getStyle()->getBg()); |
596 |
| - self::assertSame($menu->getStyle(), $menu->getItems()[0]->getSubMenu()->getStyle()); |
| 598 | + /** @var CliMenu $subMenu1 */ |
| 599 | + $subMenu1 = $menu->getItems()[0]->getSubMenu(); |
| 600 | + /** @var CliMenu $subMenu2 */ |
| 601 | + $subMenu2 = $subMenu1->getItems()[0]->getSubMenu(); |
| 602 | + |
| 603 | + self::assertSame('green', $subMenu1->getStyle()->getBg()); |
| 604 | + self::assertEquals($menu->getStyle(), $subMenu1->getStyle()); |
| 605 | + |
| 606 | + self::assertSame('green', $subMenu2->getStyle()->getBg()); |
| 607 | + self::assertEquals($menu->getStyle(), $subMenu2->getStyle()); |
| 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 | + }) |
| 624 | + ->addSubMenu('Submenu 1', function (CliMenuBuilder $b) { |
| 625 | + $b->addItem('Item 2', function () { |
| 626 | + }); |
| 627 | + }) |
| 628 | + ; |
| 629 | + }) |
| 630 | + ->build(); |
| 631 | + |
| 632 | + /** @var SplitItem $splitItem */ |
| 633 | + $splitItem = $menu->getItems()[0]; |
| 634 | + /** @var SelectableItem $selectableItem1 */ |
| 635 | + $selectableItem1 = $splitItem->getItems()[0]; |
| 636 | + /** @var CliMenu $subMenu */ |
| 637 | + $subMenu = $splitItem->getItems()[1]->getSubMenu(); |
| 638 | + |
| 639 | + self::assertSame('green', $subMenu->getStyle()->getBg()); |
| 640 | + self::assertEquals($menu->getStyle(), $subMenu->getStyle()); |
| 641 | + } |
| 642 | + |
| 643 | + public function testSubMenuIgnoresParentsStyleIfCustomAndPassesToChildren() : void |
| 644 | + { |
| 645 | + $terminal = self::createMock(Terminal::class); |
| 646 | + $terminal |
| 647 | + ->expects($this->any()) |
| 648 | + ->method('getWidth') |
| 649 | + ->will($this->returnValue(200)); |
| 650 | + |
| 651 | + $menu = (new CliMenuBuilder($terminal)) |
| 652 | + ->setBackgroundColour('green') |
| 653 | + ->addSubMenu('My SubMenu', function (CliMenuBuilder $b) { |
| 654 | + $b->setBackgroundColour('yellow') |
| 655 | + ->addSubMenu('My SubSubMenu', function (CliMenuBuilder $b) { |
| 656 | + $b->addItem('Some Item', function () { |
| 657 | + }); |
| 658 | + }); |
| 659 | + }) |
| 660 | + ->build(); |
| 661 | + |
| 662 | + /** @var CliMenu $subMenu1 */ |
| 663 | + $subMenu1 = $menu->getItems()[0]->getSubMenu(); |
| 664 | + /** @var CliMenu $subMenu2 */ |
| 665 | + $subMenu2 = $subMenu1->getItems()[0]->getSubMenu(); |
| 666 | + |
| 667 | + self::assertSame('green', $menu->getStyle()->getBg()); |
| 668 | + self::assertSame('yellow', $subMenu1->getStyle()->getBg()); |
| 669 | + self::assertSame('yellow', $subMenu2->getStyle()->getBg()); |
597 | 670 | }
|
598 | 671 |
|
599 | 672 | public function testSubMenuDoesNotInheritsParentsStyleWhenSubMenuStyleHasAlterations() : void
|
|
0 commit comments