![]() 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/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Edit/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\UrlRewrite\Block\Edit; /** * Test for \Magento\UrlRewrite\Block\Edit\FormTest * @magentoAppArea adminhtml */ class FormTest extends \PHPUnit\Framework\TestCase { /** * Get form instance * * @param array $args * @return \Magento\Framework\Data\Form */ protected function _getFormInstance($args = []) { /** @var $layout \Magento\Framework\View\Layout */ $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( \Magento\Framework\View\LayoutInterface::class ); /** @var $block \Magento\UrlRewrite\Block\Edit\Form */ $block = $layout->createBlock(\Magento\UrlRewrite\Block\Edit\Form::class, 'block', ['data' => $args]); $block->setTemplate(null); $block->toHtml(); return $block->getForm(); } /** * Test that form was prepared correctly * @magentoAppIsolation enabled */ public function testPrepareForm() { // Test form was configured correctly $form = $this->_getFormInstance(['url_rewrite' => new \Magento\Framework\DataObject(['id' => 3])]); $this->assertInstanceOf(\Magento\Framework\Data\Form::class, $form); $this->assertNotEmpty($form->getAction()); $this->assertEquals('edit_form', $form->getId()); $this->assertEquals('post', $form->getMethod()); $this->assertTrue($form->getUseContainer()); $this->assertStringContainsString('/id/3', $form->getAction()); // Check all expected form elements are present $expectedElements = [ 'store_id', 'entity_type', 'entity_id', 'request_path', 'target_path', 'redirect_type', 'description', ]; foreach ($expectedElements as $expectedElement) { $this->assertNotNull($form->getElement($expectedElement)); } } /** * Check session data restoring * @magentoAppIsolation enabled */ public function testSessionRestore() { // Set urlrewrite data to session $sessionValues = [ 'store_id' => 1, 'entity_type' => 'entity_type', 'entity_id' => 'entity_id', 'request_path' => 'request_path', 'target_path' => 'target_path', 'redirect_type' => 'redirect_type', 'description' => 'description', ]; \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( \Magento\Backend\Model\Session::class )->setUrlRewriteData( $sessionValues ); // Re-init form to use newly set session data $form = $this->_getFormInstance(['url_rewrite' => new \Magento\Framework\DataObject()]); // Check that all fields values are restored from session foreach ($sessionValues as $field => $value) { $this->assertEquals($value, $form->getElement($field)->getValue()); } } /** * Test store element is hidden when only one store available * * @magentoAppIsolation enabled * @magentoConfigFixture current_store general/single_store_mode/enabled 1 */ public function testStoreElementSingleStore() { $form = $this->_getFormInstance(['url_rewrite' => new \Magento\Framework\DataObject(['id' => 3])]); /** @var $storeElement \Magento\Framework\Data\Form\Element\AbstractElement */ $storeElement = $form->getElement('store_id'); $this->assertInstanceOf(\Magento\Framework\Data\Form\Element\Hidden::class, $storeElement); // Check that store value set correctly $defaultStore = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( \Magento\Store\Model\StoreManagerInterface::class )->getStore( true )->getId(); $this->assertEquals($defaultStore, $storeElement->getValue()); } /** * Test store selection is available and correctly configured * * @magentoAppIsolation enabled * @magentoDataFixture Magento/Store/_files/core_fixturestore.php */ public function testStoreElementMultiStores() { $form = $this->_getFormInstance(['url_rewrite' => new \Magento\Framework\DataObject(['id' => 3])]); /** @var $storeElement \Magento\Framework\Data\Form\Element\AbstractElement */ $storeElement = $form->getElement('store_id'); // Check store selection elements has correct type $this->assertInstanceOf(\Magento\Framework\Data\Form\Element\Select::class, $storeElement); // Check store selection elements has correct renderer $this->assertInstanceOf( \Magento\Backend\Block\Store\Switcher\Form\Renderer\Fieldset\Element::class, $storeElement->getRenderer() ); // Check store elements has expected values $storesList = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( \Magento\Store\Model\System\Store::class )->getStoreValuesForForm(); $this->assertIsArray($storeElement->getValues()); $this->assertNotEmpty($storeElement->getValues()); $this->assertEquals($storesList, $storeElement->getValues()); } /** * Test fields disabled status * @dataProvider fieldsStateDataProvider * @magentoAppIsolation enabled * @magentoConfigFixture current_store general/single_store_mode/enabled 0 */ public function testReadonlyFields($urlRewrite, $fields) { $form = $this->_getFormInstance(['url_rewrite' => $urlRewrite]); foreach ($fields as $fieldKey => $expected) { $this->assertEquals($expected, $form->getElement($fieldKey)->getReadonly()); } } /** * Data provider for checking fields state */ public function fieldsStateDataProvider() { return [ [ new \Magento\Framework\DataObject(), [ 'store_id' => false, ], ], [ new \Magento\Framework\DataObject(['id' => 3, 'is_autogenerated' => true]), [ 'store_id' => true, ] ] ]; } }