Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MenuItemCheckerTest.php
Go to the documentation of this file.
1 <?php
7 
11 
12 class MenuItemCheckerTest extends \PHPUnit\Framework\TestCase
13 {
17  private $activeMenuItemMock;
18 
22  private $menuItemMock;
23 
27  private $menuMock;
28 
32  private $menuItemChecker;
33 
34  protected function setUp()
35  {
36  $this->menuItemMock = $this->getMockBuilder(Item::class)
37  ->disableOriginalConstructor()
38  ->getMock();
39  $this->activeMenuItemMock = $this->getMockBuilder(Item::class)
40  ->disableOriginalConstructor()
41  ->getMock();
42  $this->menuItemChecker = new MenuItemChecker();
43  }
44 
52  public function testIsItemActive($activeItemId, $itemId, $isItem, $expected)
53  {
54  $this->menuMock = $this->getMockBuilder(Menu::class)
55  ->disableOriginalConstructor()
56  ->getMock();
57  $this->menuItemMock->expects($this->any())->method('getId')->willReturn($itemId);
58  $this->activeMenuItemMock->expects($this->any())->method('getId')->willReturn($activeItemId);
59  $this->menuItemMock->expects($this->any())->method('getChildren')->willReturn($this->menuMock);
60  $this->menuMock->expects($this->any())
61  ->method('get')
62  ->with($activeItemId)
63  ->willReturn($isItem ? $this->activeMenuItemMock : null);
64  $this->assertEquals(
65  $expected,
66  $this->menuItemChecker->isItemActive($this->activeMenuItemMock, $this->menuItemMock, 0)
67  );
68  }
69 
70  public function testIsItemActiveLevelNotZero()
71  {
72  $this->assertFalse(
73  $this->menuItemChecker->isItemActive($this->activeMenuItemMock, $this->menuItemMock, 1)
74  );
75  }
76 
80  public function dataProvider()
81  {
82  return [
83  'outputItemEquals' => ['1', '1', false, true],
84  'outputItemIsChild' => ['1', '2', true, true],
85  'outputItemIsChildNull' => ['1', '2', false, false],
86  ];
87  }
88 }
testIsItemActive($activeItemId, $itemId, $isItem, $expected)