![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-backend/Test/Unit/Model/Menu/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Backend\Test\Unit\Model\Menu; use Magento\Backend\Model\Menu; use Magento\Backend\Model\Menu\Builder; use Magento\Backend\Model\Menu\Builder\Command\Add; use Magento\Backend\Model\Menu\Builder\Command\Remove; use Magento\Backend\Model\Menu\Builder\Command\Update; use Magento\Backend\Model\Menu\Item; use Magento\Backend\Model\Menu\Item\Factory; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class BuilderTest extends TestCase { /** * @var Builder */ private $model; /** * @var Menu|MockObject */ private $menuMock; /** * @var Factory|MockObject */ private $factoryMock; /** * @inheritDoc */ protected function setUp(): void { $this->factoryMock = $this->createMock(Factory::class); $this->menuMock = $this->getMockBuilder(Menu::class) ->addMethods(['addChild']) ->onlyMethods(['add']) ->disableOriginalConstructor() ->getMock(); $this->model = (new ObjectManager($this))->getObject( Builder::class, [ 'menuItemFactory' => $this->factoryMock ] ); } /** * @return void */ public function testProcessCommand(): void { $command = $this->createMock(Add::class); $command->expects($this->any())->method('getId')->willReturn(1); $command2 = $this->createMock(Update::class); $command2->expects($this->any())->method('getId')->willReturn(1); $command->expects($this->once())->method('chain')->with($command2); $this->model->processCommand($command); $this->model->processCommand($command2); } /** * @return void */ public function testGetResultBuildsTreeStructure(): void { $item1 = $this->createMock(Item::class); $item1->expects($this->once())->method('getChildren')->willReturn($this->menuMock); $this->factoryMock->expects($this->any())->method('create')->willReturn($item1); $item2 = $this->createMock(Item::class); $this->factoryMock ->method('create') ->willReturn($item2); $this->menuMock ->method('add') ->withConsecutive( [$this->isInstanceOf(Item::class), null, 2], [$this->isInstanceOf(Item::class), null, 4] ); $this->model->processCommand( new Add( [ 'id' => 'item1', 'title' => 'Item 1', 'module' => 'Magento_Backend', 'sortOrder' => 2, 'resource' => 'Magento_Backend::item1' ] ) ); $this->model->processCommand( new Add( [ 'id' => 'item2', 'parent' => 'item1', 'title' => 'two', 'module' => 'Magento_Backend', 'sortOrder' => 4, 'resource' => 'Magento_Backend::item2' ] ) ); $this->model->getResult($this->menuMock); } /** * @return void */ public function testGetResultSkipsRemovedItems(): void { $this->model->processCommand( new Add( [ 'id' => 1, 'title' => 'Item 1', 'module' => 'Magento_Backend', 'resource' => 'Magento_Backend::i1' ] ) ); $this->model->processCommand(new Remove(['id' => 1])); $this->menuMock->expects($this->never())->method('addChild'); $this->model->getResult($this->menuMock); } /** * @return void */ public function testGetResultSkipItemsWithInvalidParent(): void { $this->expectException('OutOfRangeException'); $item1 = $this->createMock(Item::class); $this->factoryMock->expects($this->any())->method('create')->willReturn($item1); $this->model->processCommand( new Add( [ 'id' => 'item1', 'parent' => 'not_exists', 'title' => 'Item 1', 'module' => 'Magento_Backend', 'resource' => 'Magento_Backend::item1' ] ) ); $this->model->getResult($this->menuMock); } }