![]() 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-widget/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Widget\Test\Unit\Model; use Magento\CatalogWidget\Block\Product\ProductsList; use Magento\CatalogWidget\Model\Rule\Condition\Combine; use Magento\Cms\Block\Widget\Page\Link; use Magento\Framework\DataObject; use Magento\Framework\Escaper; use Magento\Framework\Math\Random; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Widget\Helper\Conditions; use Magento\Widget\Model\Config\Data; use Magento\Widget\Model\Widget; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Test class for \Magento\Widget\Model\Widget */ class WidgetTest extends TestCase { /** * @var Data|MockObject */ protected $dataStorageMock; /** * @var Escaper|MockObject */ private $escaperMock; /** * @var Widget */ protected $widget; /** * @var Conditions */ private $conditionsHelper; /** * @inheritdoc */ protected function setUp(): void { $this->dataStorageMock = $this->getMockBuilder(Data::class) ->disableOriginalConstructor() ->getMock(); $this->conditionsHelper = $this->getMockBuilder(Conditions::class) ->setMethods(['encode']) ->disableOriginalConstructor() ->getMock(); $this->escaperMock = $this->getMockBuilder(Escaper::class) ->disableOriginalConstructor() ->getMock(); $objectManagerHelper = new ObjectManager($this); $this->widget = $objectManagerHelper->getObject( Widget::class, [ 'dataStorage' => $this->dataStorageMock, 'conditionsHelper' => $this->conditionsHelper, 'escaper' => $this->escaperMock, ] ); } /** * Unit test for getWidget */ public function testGetWidgets() { $expected = ['val1', 'val2']; $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn($expected); $result = $this->widget->getWidgets(); $this->assertEquals($expected, $result); } /** * Unit test for getWidgetsWithFilter */ public function testGetWidgetsWithFilter() { $configFile = __DIR__ . '/_files/mappedConfigArrayAll.php'; $widgets = include $configFile; $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn($widgets); $result = $this->widget->getWidgets(['name' => 'CMS Page Link', 'description' => 'Link to a CMS Page']); $configFileOne = __DIR__ . '/_files/mappedConfigArray1.php'; $expected = ['cms_page_link' => include $configFileOne]; $this->assertEquals($expected, $result); } /** * Unit test for getWidgetsWithUnknownFilter */ public function testGetWidgetsWithUnknownFilter() { $configFile = __DIR__ . '/_files/mappedConfigArrayAll.php'; $widgets = include $configFile; $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn($widgets); $result = $this->widget->getWidgets(['name' => 'unknown', 'description' => 'unknown']); $expected = []; $this->assertEquals($expected, $result); } /** * Unit test for getWidgetByClassType */ public function testGetWidgetByClassType() { $widgetOne = ['@' => ['type' => 'type1']]; $widgets = ['widget1' => $widgetOne]; $this->dataStorageMock->expects($this->any()) ->method('get') ->willReturn($widgets); $this->assertEquals($widgetOne, $this->widget->getWidgetByClassType('type1')); $this->assertNull($this->widget->getWidgetByClassType('type2')); } /** * Unit test for getConfigAsObject */ public function testGetConfigAsObject() { $configFile = __DIR__ . '/_files/mappedConfigArrayAll.php'; $widgets = include $configFile; $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn($widgets); $resultObject = $this->widget->getConfigAsObject(Link::class); $this->assertInstanceOf(DataObject::class, $resultObject); $this->assertSame('CMS Page Link', $resultObject->getName()); $this->assertSame('Link to a CMS Page', $resultObject->getDescription()); $this->assertSame('1', $resultObject->getIsEmailCompatible()); $this->assertSame('Magento_Cms::images/widget_page_link.png', $resultObject->getPlaceholderImage()); $resultParameters = $resultObject->getParameters(); $this->assertInstanceOf(DataObject::class, $resultParameters['page_id']); $this->assertInstanceOf(DataObject::class, $resultParameters['anchor_text']); $this->assertInstanceOf(DataObject::class, $resultParameters['template']); $supportedContainersExpected = [ '0' => [ 'container_name' => 'left', 'template' => ['default' => 'default', 'names_only' => 'link_inline'], ], '1' => [ 'container_name' => 'content', 'template' => ['grid' => 'default', 'list' => 'list'] ], ]; $this->assertSame($supportedContainersExpected, $resultObject->getSupportedContainers()); } /** * Unit test for getConfigAsObjectWidgetNoFound */ public function testGetConfigAsObjectWidgetNoFound() { $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn([]); $resultObject = $this->widget->getConfigAsObject(Link::class); $this->assertInstanceOf(DataObject::class, $resultObject); $this->assertSame([], $resultObject->getData()); } /** * Unit test for getWidgetDeclaration */ public function testGetWidgetDeclaration() { $mathRandomMock = $this->createPartialMock(Random::class, ['getRandomString']); $mathRandomMock->expects($this->any())->method('getRandomString')->willReturn('asdf'); $reflection = new \ReflectionClass(get_class($this->widget)); $reflectionProperty = $reflection->getProperty('mathRandom'); $reflectionProperty->setAccessible(true); $reflectionProperty->setValue($this->widget, $mathRandomMock); $conditions = [ [ 'type' => Combine::class, 'aggregator' => 'all', 'value' => '1', 'new_child' => '' ] ]; $params = [ 'title' => 'my "widget"', 'show_pager' => '1', 'products_per_page' => '5', 'products_count' => '10', 'template' => 'Magento_CatalogWidget::product/widget/content/grid.phtml', 'conditions' => $conditions ]; $this->conditionsHelper->expects($this->once())->method('encode')->with($conditions) ->willReturn('encoded-conditions-string'); $this->escaperMock->expects($this->atLeastOnce()) ->method('escapeHtmlAttr') ->willReturnMap([ ['my "widget"', false, 'my "widget"'], ['1', false, '1'], ['5', false, '5'], ['10', false, '10'], ['Magento_CatalogWidget::product/widget/content/grid.phtml', false, 'Magento_CatalogWidget::product/widget/content/grid.phtml' ], ['encoded-conditions-string', false, 'encoded-conditions-string'], ]); $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn([]); $result = $this->widget->getWidgetDeclaration( ProductsList::class, $params ); $this->assertStringContainsString('{{widget type="Magento\CatalogWidget\Block\Product\ProductsList"', $result); $this->assertStringContainsString('title="my "widget""', $result); $this->assertStringContainsString('conditions_encoded="encoded-conditions-string"', $result); $this->assertStringContainsString('page_var_name="pasdf"', $result); } /** * Unit test for getWidgetDeclarationWithZeroValueParam */ public function testGetWidgetDeclarationWithZeroValueParam() { $mathRandomMock = $this->createPartialMock(Random::class, ['getRandomString']); $mathRandomMock->expects($this->any()) ->method('getRandomString') ->willReturn('asdf'); (new ObjectManager($this))->setBackwardCompatibleProperty( $this->widget, 'mathRandom', $mathRandomMock ); $conditions = [ [ 'type' => Combine::class, 'aggregator' => 'all', 'value' => '1', 'new_child' => '' ] ]; $params = [ 'title' => 'my widget', 'show_pager' => '1', 'products_per_page' => '5', 'products_count' => '0', 'template' => 'Magento_CatalogWidget::product/widget/content/grid.phtml', 'conditions' => $conditions ]; $this->conditionsHelper->expects($this->once()) ->method('encode') ->with($conditions) ->willReturn('encoded-conditions-string'); $this->dataStorageMock->expects($this->once()) ->method('get') ->willReturn([]); $result = $this->widget->getWidgetDeclaration( ProductsList::class, $params ); $this->assertStringContainsString('{{widget type="Magento\CatalogWidget\Block\Product\ProductsList"', $result); $this->assertStringContainsString('page_var_name="pasdf"', $result); $this->assertStringContainsString('products_count=""', $result); } }