![]() 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-config/Test/Unit/Block/System/Config/Form/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Config\Test\Unit\Block\System\Config\Form; use Magento\Backend\Model\Url; use Magento\Config\Block\System\Config\Form\Field; use Magento\Framework\Data\Form\Element\Text; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Store\Model\StoreManager; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Magento\Framework\View\Helper\SecureHtmlRenderer; /** * Test how class render field html element in Stores Configuration */ class FieldTest extends TestCase { /** * @var Field */ protected $_object; /** * @var MockObject */ protected $_elementMock; /** * @var array */ protected $_testData; /** * @var MockObject */ protected $_storeManagerMock; /** * @var MockObject */ protected $_layoutMock; protected function setUp(): void { $this->_storeManagerMock = $this->createMock(StoreManager::class); $secureRendererMock = $this->createMock(SecureHtmlRenderer::class); $secureRendererMock->method('renderEventListenerAsTag') ->willReturnCallback( function (string $event, string $js, string $selector): string { return "<script>document.querySelector('$selector').$event = function () { $js };</script>"; } ); $secureRendererMock->method('renderStyleAsTag') ->willReturnCallback( function (string $style, string $selector): string { return "<style>$selector { $style }</style>"; } ); $data = [ 'storeManager' => $this->_storeManagerMock, 'urlBuilder' => $this->createMock(Url::class), 'secureRenderer' => $secureRendererMock ]; $helper = new ObjectManager($this); $this->_object = $helper->getObject(Field::class, $data); $this->_testData = [ 'htmlId' => 'test_field_id', 'name' => 'test_name', 'label' => 'test_label', 'elementHTML' => 'test_html', ]; $this->_elementMock = $this->getMockBuilder(Text::class) ->addMethods([ 'getLabel', 'getComment', 'getHint', 'getScope', 'getScopeLabel', 'getInherit', 'getIsDisableInheritance', 'getCanUseWebsiteValue', 'getCanUseDefaultValue', 'setDisabled', 'getTooltip' ]) ->onlyMethods(['getHtmlId', 'getName', 'getElementHtml', 'setReadonly']) ->disableOriginalConstructor() ->getMock(); $this->_elementMock->expects( $this->any() )->method( 'getHtmlId' )->willReturn( $this->_testData['htmlId'] ); $this->_elementMock->expects( $this->any() )->method( 'getName' )->willReturn( $this->_testData['name'] ); $this->_elementMock->expects( $this->any() )->method( 'getLabel' )->willReturn( $this->_testData['label'] ); $this->_elementMock->expects( $this->any() )->method( 'getElementHtml' )->willReturn( $this->_testData['elementHTML'] ); } public function testRenderHtmlIdLabelInputElementName() { $expected = '<tr id="row_' . $this->_testData['htmlId'] . '">'; $expected .= '<td class="label"><label for="' . $this->_testData['htmlId'] . '"><span>' . $this->_testData['label'] . '</span></label></td>'; $expected .= '<td class="value">' . $this->_testData['elementHTML'] . '</td>'; $expected .= '<td class=""></td></tr>'; $actual = $this->_object->render($this->_elementMock); $this->assertEquals($expected, $actual); } public function testRenderValueWithCommentBlock() { $testComment = 'test_comment'; $this->_elementMock->expects($this->any())->method('getComment')->willReturn($testComment); $expected = '<td class="value">' . $this->_testData['elementHTML'] . '<p class="note"><span>' . $testComment . '</span></p></td>'; $actual = $this->_object->render($this->_elementMock); $this->assertStringContainsString($expected, $actual); } public function testRenderValueWithTooltipBlock() { $testTooltip = 'test_tooltip'; $this->_elementMock->expects($this->any())->method('getTooltip')->willReturn($testTooltip); $expected = '<td class="value with-tooltip">' . $this->_testData['elementHTML'] . '<div class="tooltip"><span class="help"><span></span></span><div class="tooltip-content">' . $testTooltip . '</div></div></td>'; $actual = $this->_object->render($this->_elementMock); $this->assertStringContainsString($expected, $actual); } public function testRenderHint() { $testHint = 'test_hint'; $this->_elementMock->expects($this->any())->method('getHint')->willReturn($testHint); $expected = '<td class=""><div class="hint"><div id="hint_test_field_id">' . $testHint . '</div></div>'; $actual = $this->_object->render($this->_elementMock); $this->assertStringContainsString($expected, $actual); } public function testRenderScopeLabel() { $this->_storeManagerMock->expects($this->once())->method('isSingleStoreMode')->willReturn(false); $testScopeLabel = 'test_scope_label'; $this->_elementMock->expects($this->any())->method('getScope')->willReturn(true); $this->_elementMock->expects($this->any())->method('getScopeLabel')->willReturn($testScopeLabel); $expected = '<tr id="row_test_field_id">' . '<td class="label"><label for="test_field_id">' . '<span data-config-scope="' . $testScopeLabel . '">test_label</span>' . '</label></td><td class="value">test_html</td><td class=""></td></tr>'; $actual = $this->_object->render($this->_elementMock); $this->assertStringContainsString($expected, $actual); } public function testRenderInheritCheckbox() { $this->_elementMock->expects($this->any())->method('getInherit')->willReturn(true); $this->_elementMock->expects($this->any())->method('getCanUseWebsiteValue')->willReturn(true); $this->_elementMock->expects($this->any())->method('getCanUseDefaultValue')->willReturn(true); $this->_elementMock->expects($this->once())->method('setDisabled')->with(true); $this->_elementMock->method('getIsDisableInheritance')->willReturn(true); $this->_elementMock->method('setReadonly')->with(true); $expected = '<td class="use-default">'; $expected .= '<input id="' . $this->_testData['htmlId'] . '_inherit" name="' . $this->_testData['name'] . '[inherit]" type="checkbox" value="1"' . ' class="checkbox config-inherit" checked="checked"' . ' disabled="disabled"' . ' readonly="1" />' . '<script>document.querySelector(\'input#test_field_id_inherit\').onclick = function () '. '{ toggleValueElements(this, Element.previous(this.parentNode)) };</script>'; $expected .= '<label for="' . $this->_testData['htmlId'] . '_inherit" class="inherit">Use Website</label>'; $actual = $this->_object->render($this->_elementMock); $this->assertStringContainsString($expected, $actual); } }