123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?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->assertContains($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')->will($this->returnValue($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',
- ],
- ],
- ],
- ];
- }
- }
|