123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Test\Unit\Model\Menu;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
- class BuilderTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Backend\Model\Menu\Builder
- */
- private $model;
- /**
- * @var \Magento\Backend\Model\Menu|\PHPUnit_Framework_MockObject_MockObject
- */
- private $menuMock;
- /**
- * @var \Magento\Backend\Model\Menu\Item\Factory|\PHPUnit_Framework_MockObject_MockObject
- */
- private $factoryMock;
- protected function setUp()
- {
- $this->factoryMock = $this->createMock(\Magento\Backend\Model\Menu\Item\Factory::class);
- $this->menuMock = $this->createPartialMock(\Magento\Backend\Model\Menu::class, ['addChild', 'add']);
- $this->model = (new ObjectManager($this))->getObject(
- \Magento\Backend\Model\Menu\Builder::class,
- [
- 'menuItemFactory' => $this->factoryMock
- ]
- );
- }
- public function testProcessCommand()
- {
- $command = $this->createMock(\Magento\Backend\Model\Menu\Builder\Command\Add::class);
- $command->expects($this->any())->method('getId')->will($this->returnValue(1));
- $command2 = $this->createMock(\Magento\Backend\Model\Menu\Builder\Command\Update::class);
- $command2->expects($this->any())->method('getId')->will($this->returnValue(1));
- $command->expects($this->once())->method('chain')->with($this->equalTo($command2));
- $this->model->processCommand($command);
- $this->model->processCommand($command2);
- }
- public function testGetResultBuildsTreeStructure()
- {
- $item1 = $this->createMock(\Magento\Backend\Model\Menu\Item::class);
- $item1->expects($this->once())->method('getChildren')->will($this->returnValue($this->menuMock));
- $this->factoryMock->expects($this->any())->method('create')->will($this->returnValue($item1));
- $item2 = $this->createMock(\Magento\Backend\Model\Menu\Item::class);
- $this->factoryMock->expects($this->at(1))->method('create')->will($this->returnValue($item2));
- $this->menuMock->expects(
- $this->at(0)
- )->method(
- 'add'
- )->with(
- $this->isInstanceOf(\Magento\Backend\Model\Menu\Item::class),
- $this->equalTo(null),
- $this->equalTo(2)
- );
- $this->menuMock->expects(
- $this->at(1)
- )->method(
- 'add'
- )->with(
- $this->isInstanceOf(\Magento\Backend\Model\Menu\Item::class),
- $this->equalTo(null),
- $this->equalTo(4)
- );
- $this->model->processCommand(
- new \Magento\Backend\Model\Menu\Builder\Command\Add(
- [
- 'id' => 'item1',
- 'title' => 'Item 1',
- 'module' => 'Magento_Backend',
- 'sortOrder' => 2,
- 'resource' => 'Magento_Backend::item1',
- ]
- )
- );
- $this->model->processCommand(
- new \Magento\Backend\Model\Menu\Builder\Command\Add(
- [
- 'id' => 'item2',
- 'parent' => 'item1',
- 'title' => 'two',
- 'module' => 'Magento_Backend',
- 'sortOrder' => 4,
- 'resource' => 'Magento_Backend::item2',
- ]
- )
- );
- $this->model->getResult($this->menuMock);
- }
- public function testGetResultSkipsRemovedItems()
- {
- $this->model->processCommand(
- new \Magento\Backend\Model\Menu\Builder\Command\Add(
- [
- 'id' => 1,
- 'title' => 'Item 1',
- 'module' => 'Magento_Backend',
- 'resource' => 'Magento_Backend::i1',
- ]
- )
- );
- $this->model->processCommand(new \Magento\Backend\Model\Menu\Builder\Command\Remove(['id' => 1]));
- $this->menuMock->expects($this->never())->method('addChild');
- $this->model->getResult($this->menuMock);
- }
- /**
- * @expectedException \OutOfRangeException
- */
- public function testGetResultSkipItemsWithInvalidParent()
- {
- $item1 = $this->createMock(\Magento\Backend\Model\Menu\Item::class);
- $this->factoryMock->expects($this->any())->method('create')->will($this->returnValue($item1));
- $this->model->processCommand(
- new \Magento\Backend\Model\Menu\Builder\Command\Add(
- [
- 'id' => 'item1',
- 'parent' => 'not_exists',
- 'title' => 'Item 1',
- 'module' => 'Magento_Backend',
- 'resource' => 'Magento_Backend::item1',
- ]
- )
- );
- $this->model->getResult($this->menuMock);
- }
- }
|