MenuItemCheckerTest.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Test\Unit\Block;
  7. use Magento\Backend\Model\Menu\Item;
  8. use Magento\Backend\Model\Menu;
  9. use Magento\Backend\Block\MenuItemChecker;
  10. class MenuItemCheckerTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var Item|\PHPUnit_Framework_MockObject_MockObject
  14. */
  15. private $activeMenuItemMock;
  16. /**
  17. * @var Item|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $menuItemMock;
  20. /**
  21. * @var Menu|\PHPUnit_Framework_MockObject_MockObject
  22. */
  23. private $menuMock;
  24. /**
  25. * @var MenuItemChecker;
  26. */
  27. private $menuItemChecker;
  28. protected function setUp()
  29. {
  30. $this->menuItemMock = $this->getMockBuilder(Item::class)
  31. ->disableOriginalConstructor()
  32. ->getMock();
  33. $this->activeMenuItemMock = $this->getMockBuilder(Item::class)
  34. ->disableOriginalConstructor()
  35. ->getMock();
  36. $this->menuItemChecker = new MenuItemChecker();
  37. }
  38. /**
  39. * @param int $activeItemId
  40. * @param int $itemId
  41. * @param bool $isItem
  42. * @param bool $expected
  43. * @dataProvider dataProvider
  44. */
  45. public function testIsItemActive($activeItemId, $itemId, $isItem, $expected)
  46. {
  47. $this->menuMock = $this->getMockBuilder(Menu::class)
  48. ->disableOriginalConstructor()
  49. ->getMock();
  50. $this->menuItemMock->expects($this->any())->method('getId')->willReturn($itemId);
  51. $this->activeMenuItemMock->expects($this->any())->method('getId')->willReturn($activeItemId);
  52. $this->menuItemMock->expects($this->any())->method('getChildren')->willReturn($this->menuMock);
  53. $this->menuMock->expects($this->any())
  54. ->method('get')
  55. ->with($activeItemId)
  56. ->willReturn($isItem ? $this->activeMenuItemMock : null);
  57. $this->assertEquals(
  58. $expected,
  59. $this->menuItemChecker->isItemActive($this->activeMenuItemMock, $this->menuItemMock, 0)
  60. );
  61. }
  62. public function testIsItemActiveLevelNotZero()
  63. {
  64. $this->assertFalse(
  65. $this->menuItemChecker->isItemActive($this->activeMenuItemMock, $this->menuItemMock, 1)
  66. );
  67. }
  68. /**
  69. * @return array
  70. */
  71. public function dataProvider()
  72. {
  73. return [
  74. 'outputItemEquals' => ['1', '1', false, true],
  75. 'outputItemIsChild' => ['1', '2', true, true],
  76. 'outputItemIsChildNull' => ['1', '2', false, false],
  77. ];
  78. }
  79. }