![]() 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/CatalogSearch/Block/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\CatalogSearch\Block; use Magento\Framework\App\RequestInterface; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\View\Element\Template; use Magento\Framework\View\Element\Text; use Magento\Framework\View\LayoutInterface; use Magento\Search\Model\QueryFactory; use Magento\TestFramework\Helper\Bootstrap; use Magento\Search\ViewModel\ConfigProvider; class ResultTest extends \PHPUnit\Framework\TestCase { /** * @var ObjectManagerInterface */ private $objectManager; /** * @var LayoutInterface */ private $layout; /** * @var ConfigProvider */ private $configProvider; /** * @inheritdoc */ protected function setUp(): void { $this->objectManager = Bootstrap::getObjectManager(); $this->layout = $this->objectManager->get(LayoutInterface::class); $this->configProvider = $this->objectManager->get(ConfigProvider::class); } /** * Set list orders test * * @return void */ public function testSetListOrders(): void { $this->layout->addBlock(Text::class, 'head'); // The tested block is using head block /** @var $block Result */ $block = $this->layout->addBlock(Result::class, 'block'); $childBlock = $this->layout->addBlock(Text::class, 'search_result_list', 'block'); $this->assertSame($childBlock, $block->getListBlock()); } /** * Verify search value escaping process * * @dataProvider toEscapeSearchTextDataProvider * @magentoAppArea frontend * @param string $searchValue * @param string $expectedOutput * @param string $unexpectedOutput * @return void */ public function testEscapeSearchText(string $searchValue, string $expectedOutput, string $unexpectedOutput): void { /** @var Result $searchResultBlock */ $searchResultBlock = $this->layout->createBlock(Result::class); /** @var Template $searchBlock */ $searchQueryParams = $this->getMockBuilder(\Magento\Search\ViewModel\AdditionalSearchFormData::class) ->disableOriginalConstructor() ->setMethods(['getFormData']) ->getMock(); $searchQueryParams->expects($this->any()) ->method('getFormData') ->willReturn([]); $searchBlock = $this->layout->createBlock(Template::class); $searchBlock->setData([ 'configProvider' => $this->configProvider, 'additionalSearchFormData' => $searchQueryParams, ]); $searchBlock->setTemplate('Magento_Search::form.mini.phtml'); /** @var RequestInterface $request */ $request = $this->objectManager->get(RequestInterface::class); $request->setParam(QueryFactory::QUERY_VAR_NAME, $searchValue); $searchHtml = $searchBlock->toHtml(); $this->assertStringContainsString('value=' . '"' . $expectedOutput . '"', $searchHtml); $this->assertStringNotContainsString($unexpectedOutput, $searchHtml); $resultTitle = $searchResultBlock->getSearchQueryText()->render(); $this->assertStringContainsString("Search results for: '{$expectedOutput}'", $resultTitle); $this->assertStringNotContainsString($unexpectedOutput, $resultTitle); } /** * DataProvider for testEscapeSearchText() * * @return array */ public function toEscapeSearchTextDataProvider(): array { return [ 'less_than_sign_escaped' => ['<', '<', '&lt;'], 'greater_than_sign_escaped' => ['>', '>', '&gt;'], 'ampersand_sign_escaped' => ['&', '&', '&amp;'], 'double_quote_sign_escaped' => ['"', '"', '&quot;'], 'single_quote_sign_escaped' => ["'", ''', '&#039;'], 'plus_sign_not_escaped' => ['+', '+', '&+;'], 'characters_not_escaped' => ['abc', 'abc', '&abc;'], 'numbers_not_escaped' => ['123', '123', '&123;'], ]; } }