![]() 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/Backend/Model/Search/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Backend\Model\Search; use Magento\Backend\App\Area\FrontNameResolver; use Magento\Framework\App\Area; use Magento\Framework\App\AreaList; use Magento\Framework\App\Cache\State; use Magento\Framework\App\Config\FileResolver; use Magento\Framework\AuthorizationInterface; use Magento\Framework\Config\FileIteratorFactory; use Magento\Framework\Config\ScopeInterface; use Magento\TestFramework\Helper\Bootstrap; /** * @magentoAppArea adminhtml * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.StaticAccess) */ class ConfigTest extends \PHPUnit\Framework\TestCase { /** * @dataProvider loadDataProvider * @magentoConfigFixture current_store general/store_information/name Foo */ public function testLoad($query, $expectedResult) { /** @var \Magento\Backend\Model\Search\Config $configSearch */ $configSearch = $this->getConfigSearchInstance(); $configSearch->setQuery($query); $configSearch->load(); /** SUT Execution */ $searchResults = $configSearch->getResults(); /** Ensure that search results are correct */ $this->assertCount(count($expectedResult), $searchResults, 'Quantity of search result items is invalid.'); foreach ($expectedResult as $itemIndex => $expectedItem) { /** Validate URL to item */ $elementPathParts = explode('/', $expectedItem['id']); // filter empty values $elementPathParts = array_values(array_filter($elementPathParts)); foreach ($elementPathParts as $elementPathPart) { $this->assertStringContainsString( $elementPathPart, $searchResults[$itemIndex]['url'], 'Item URL is invalid.' ); } unset($searchResults[$itemIndex]['url']); /** Validate other item data */ $this->assertEquals($expectedItem, $searchResults[$itemIndex], "Data of item #$itemIndex is invalid."); } } /** * @return \Magento\Backend\Model\Search\Config */ private function getConfigSearchInstance() { Bootstrap::getInstance()->reinitialize([ State::PARAM_BAN_CACHE => true, ]); Bootstrap::getObjectManager() ->get(ScopeInterface::class) ->setCurrentScope(FrontNameResolver::AREA_CODE); Bootstrap::getObjectManager()->get(AreaList::class) ->getArea(FrontNameResolver::AREA_CODE) ->load(Area::PART_CONFIG); Bootstrap::getObjectManager()->configure([ 'preferences' => [ AuthorizationInterface::class => \Magento\Backend\Model\Search\AuthorizationMock::class ] ]); $fileResolverMock = $this->getMockBuilder(FileResolver::class)->disableOriginalConstructor()->getMock(); $fileIteratorFactory = Bootstrap::getObjectManager()->get(FileIteratorFactory::class); $fileIterator = $fileIteratorFactory->create( [__DIR__ . '/_files/test_config.xml'] ); $fileResolverMock->expects($this->any())->method('get')->willReturn($fileIterator); $objectManager = Bootstrap::getObjectManager(); /** @var \Magento\Config\Model\Config\Structure\Reader $structureReader */ $structureReader = $objectManager->create( \Magento\Config\Model\Config\Structure\Reader::class, ['fileResolver' => $fileResolverMock] ); /** @var \Magento\Config\Model\Config\Structure\Data $structureData */ $structureData = $objectManager->create( \Magento\Config\Model\Config\Structure\Data::class, ['reader' => $structureReader] ); /** @var \Magento\Config\Model\Config\Structure $structure */ $structure = $objectManager->create( \Magento\Config\Model\Config\Structure::class, ['structureData' => $structureData] ); return $objectManager->create( \Magento\Backend\Model\Search\Config::class, ['configStructure' => $structure] ); } /** * @return array */ public static function loadDataProvider() { return [ 'Search by field name' => [ 'Test Field', [ [ 'id' => 'test_section/test_group/test_field_1', 'type' => null, 'name' => 'Test Field', 'description' => ' / Test Tab / Test Section / Test Group', ], [ 'id' => 'test_section/test_group/test_field_2', 'type' => null, 'name' => 'Test Field', 'description' => ' / Test Tab / Test Section / Test Group', ], ], ], 'Search by group name' => [ 'Test Group', [ [ 'id' => 'test_section/test_group', 'type' => null, 'name' => 'Test Group', 'description' => ' / Test Tab / Test Section', ], ], ], 'Search by section name' => [ 'Test Section', [ [ 'id' => '/test_section', 'type' => null, 'name' => 'Test Section', 'description' => ' / Test Tab', ], ], ], ]; } }