![]() 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/framework/View/Test/Unit/Layout/Generator/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\View\Test\Unit\Layout\Generator; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use Magento\Framework\View\Layout; use Magento\Framework\View\Layout\Data\Structure; use Magento\Framework\View\Layout\Element; use Magento\Framework\View\Layout\Generator\Container; use Magento\Framework\View\Layout\Generator\Context; use Magento\Framework\View\Layout\ScheduledStructure; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class ContainerTest extends TestCase { /** * @var ObjectManagerHelper */ protected $objectManagerHelper; /** * @var Layout\Reader\Context|MockObject */ protected $readerContextMock; /** * @var Layout\Generator\Context|MockObject */ protected $generatorContextMock; /** * @var Container|MockObject */ protected $container; /** * @var ScheduledStructure|MockObject */ protected $scheduledStructureMock; /** * @var Structure|MockObject */ protected $structureMock; protected function setUp(): void { $this->objectManagerHelper = new ObjectManagerHelper($this); $this->scheduledStructureMock = $this->getMockBuilder(ScheduledStructure::class) ->disableOriginalConstructor() ->getMock(); $this->structureMock = $this->getMockBuilder(Structure::class) ->disableOriginalConstructor() ->getMock(); $this->generatorContextMock = $this->getMockBuilder(Context::class) ->disableOriginalConstructor() ->getMock(); $this->generatorContextMock->expects($this->any()) ->method('getStructure') ->willReturn($this->structureMock); $this->readerContextMock = $this->getMockBuilder(\Magento\Framework\View\Layout\Reader\Context::class) ->disableOriginalConstructor() ->getMock(); $this->readerContextMock->expects($this->any()) ->method('getScheduledStructure') ->willReturn($this->scheduledStructureMock); $this->container = $this->objectManagerHelper->getObject( Container::class ); } /** * @param array $structureElements * @param array $setAttributeData * @param int $setAttributeCalls * * @dataProvider processDataProvider */ public function testProcess($structureElements, $setAttributeData, $setAttributeCalls) { $this->scheduledStructureMock->expects($this->once()) ->method('getElements') ->willReturn($structureElements); $this->structureMock->expects($this->exactly($setAttributeCalls)) ->method('setAttribute') ->willReturnMap($setAttributeData); $this->container->process($this->readerContextMock, $this->generatorContextMock); } /** * @return array */ public function processDataProvider() { return [ 'sample_data' => [ 'structureElements' => [ 'first_container' => [ 'container', [ 'attributes' => [ Element::CONTAINER_OPT_LABEL => 'dd_label', Container::CONTAINER_OPT_HTML_TAG => 'dd', Container::CONTAINER_OPT_HTML_CLASS => 'dd_class', Container::CONTAINER_OPT_HTML_ID => 'dd_id', ] ], ], ], 'setAttributeData' => [ ['first_container', Element::CONTAINER_OPT_LABEL, 'dd_label'], ['first_container', Container::CONTAINER_OPT_HTML_TAG, 'dd'], ['first_container', Container::CONTAINER_OPT_HTML_CLASS, 'dd_class'], ['first_container', Container::CONTAINER_OPT_HTML_ID, 'dd_id'], ], 'setAttributeCalls' => 4, ], 'sample_data2' => [ 'structureElements' => [ 'first_container' => [ 'container', [ 'attributes' => [ Container::CONTAINER_OPT_HTML_TAG => 'dd', Container::CONTAINER_OPT_HTML_CLASS => 'dd_class', Container::CONTAINER_OPT_HTML_ID => 'dd_id', ] ], ], ], 'setAttributeData' => [ ['first_container', Container::CONTAINER_OPT_HTML_TAG, 'dd'], ['first_container', Container::CONTAINER_OPT_HTML_CLASS, 'dd_class'], ['first_container', Container::CONTAINER_OPT_HTML_ID, 'dd_id'], ], 'setAttributeCalls' => 3, ], 'Article as allowed container tag' => [ 'structureElements' => [ 'first_container' => [ 'container', [ 'attributes' => [ Container::CONTAINER_OPT_HTML_TAG => 'article', Container::CONTAINER_OPT_HTML_CLASS => 'article_class', Container::CONTAINER_OPT_HTML_ID => 'article_id', ] ], ], ], 'setAttributeData' => [ ['first_container', Container::CONTAINER_OPT_HTML_TAG, 'article'], ['first_container', Container::CONTAINER_OPT_HTML_CLASS, 'article_class'], ['first_container', Container::CONTAINER_OPT_HTML_ID, 'article_id'], ], 'setAttributeCalls' => 3, ] ]; } /** * @param array $structureElements * * @dataProvider processWithExceptionDataProvider */ public function testProcessWithException($structureElements) { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->scheduledStructureMock->expects($this->once()) ->method('getElements') ->willReturn($structureElements); $this->structureMock->expects($this->never()) ->method('setAttribute') ->willReturnSelf(); $this->container->process($this->readerContextMock, $this->generatorContextMock); } /** * @return array */ public function processWithExceptionDataProvider() { return [ 'wrong_html_tag' => [ 'structureElements' => [ 'first_container' => [ 'container', [ 'attributes' => [ Container::CONTAINER_OPT_LABEL => 'label', Element::CONTAINER_OPT_HTML_TAG => 'custom_tag', ] ], ], ], ], 'html_id_without_tag' => [ 'structureElements' => [ 'second_container' => [ 'container', [ 'attributes' => [ Container::CONTAINER_OPT_LABEL => 'label', Element::CONTAINER_OPT_HTML_ID => 'html_id', ] ], ], ], ], 'html_class_without_tag' => [ 'structureElements' => [ 'third_container' => [ 'container', [ 'attributes' => [ Container::CONTAINER_OPT_LABEL => 'label', Element::CONTAINER_OPT_HTML_CLASS => 'html_class', ] ], ], ], ], ]; } }