markTestSkipped('MAGETWO-44910');
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
$objectManager->get(\Magento\Framework\Locale\ResolverInterface::class)->setLocale('de_DE');
$this->getRequest()->setParam('q', 'query_text');
$this->dispatch('catalogsearch/result');
$responseBody = $this->getResponse()->getBody();
$this->assertNotContains('for="search">Search', $responseBody);
$this->assertStringMatchesFormat('%aSuche%S%a', $responseBody);
$this->assertNotContains('Search entire store here...', $responseBody);
$this->assertContains('Den gesamten Shop durchsuchen...', $responseBody);
}
public function testIndexActionXSSQueryVerification()
{
$this->getRequest()->setParam('q', '');
$this->dispatch('catalogsearch/result');
$responseBody = $this->getResponse()->getBody();
$data = '';
$this->assertNotContains($data, $responseBody);
$this->assertContains(htmlspecialchars($data, ENT_COMPAT, 'UTF-8', false), $responseBody);
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/query_redirect.php
*/
public function testRedirect()
{
$this->dispatch('/catalogsearch/result/?q=query_text');
$responseBody = $this->getResponse();
$this->assertTrue($responseBody->isRedirect());
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/query_redirect.php
*/
public function testNoRedirectIfCurrentUrlAndRedirectTermAreSame()
{
$this->dispatch('/catalogsearch/result/?q=query_text&cat=41');
$responseBody = $this->getResponse();
$this->assertFalse($responseBody->isRedirect());
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/query.php
*/
public function testPopularity()
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var $query \Magento\Search\Model\Query */
$query = $objectManager->create(\Magento\Search\Model\Query::class);
$query->loadByQueryText('query_text');
$this->assertEquals(1, $query->getPopularity());
$this->dispatch('catalogsearch/searchTermsLog/save?q=query_text');
$responseBody = $this->getResponse()->getBody();
$data = '"success":true';
$this->assertContains($data, $responseBody);
$query->loadByQueryText('query_text');
$this->assertEquals(2, $query->getPopularity());
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/popular_query.php
* @magentoDataFixture Magento/CatalogSearch/_files/query.php
*/
public function testPopularSearch()
{
$this->cacheAndPopularitySetup();
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var $query \Magento\Search\Model\Query */
$query = $objectManager->create(\Magento\Search\Model\Query::class);
$query->loadByQueryText('popular_query_text');
$this->assertEquals(100, $query->getPopularity());
$this->dispatch('/catalogsearch/result/?q=popular_query_text');
$responseBody = $this->getResponse()->getBody();
$this->assertContains('Search results for: 'popular_query_text'', $responseBody);
$this->assertContains('/catalogsearch/searchTermsLog/save/', $responseBody);
$query->loadByQueryText('popular_query_text');
$this->assertEquals(100, $query->getPopularity());
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/popular_query.php
* @magentoDataFixture Magento/CatalogSearch/_files/query.php
*/
public function testPopularSearchWithAdditionalRequestParameters()
{
$this->cacheAndPopularitySetup();
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var $query \Magento\Search\Model\Query */
$query = $objectManager->create(\Magento\Search\Model\Query::class);
$query->loadByQueryText('popular_query_text');
$this->assertEquals(100, $query->getPopularity());
$this->dispatch('/catalogsearch/result/?q=popular_query_text&additional_parameters=some');
$responseBody = $this->getResponse()->getBody();
$this->assertContains('Search results for: 'popular_query_text'', $responseBody);
$this->assertNotContains('/catalogsearch/searchTermsLog/save/', $responseBody);
$query->loadByQueryText('popular_query_text');
$this->assertEquals(101, $query->getPopularity());
}
/**
* @magentoDataFixture Magento/CatalogSearch/_files/popular_query.php
* @magentoDataFixture Magento/CatalogSearch/_files/query.php
*/
public function testNotPopularSearch()
{
$this->cacheAndPopularitySetup();
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var $query \Magento\Search\Model\Query */
$query = $objectManager->create(\Magento\Search\Model\Query::class);
$query->loadByQueryText('query_text');
$this->assertEquals(1, $query->getPopularity());
$this->dispatch('/catalogsearch/result/?q=query_text');
$responseBody = $this->getResponse()->getBody();
$this->assertContains('Search results for: 'query_text'', $responseBody);
$this->assertNotContains('/catalogsearch/searchTermsLog/save/', $responseBody);
$query->loadByQueryText('query_text');
$this->assertEquals(2, $query->getPopularity());
}
private function cacheAndPopularitySetup()
{
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
/** @var $scopeConfig \Magento\Framework\App\MutableScopeConfig */
$scopeConfig = $objectManager->get(\Magento\Framework\App\Config\MutableScopeConfigInterface::class);
$scopeConfig->setValue(
\Magento\Search\Model\PopularSearchTerms::XML_PATH_MAX_COUNT_CACHEABLE_SEARCH_TERMS,
1,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
/** @var $cacheState \Magento\Framework\App\Cache\StateInterface */
$cacheState = $objectManager->get(\Magento\Framework\App\Cache\StateInterface::class);
$cacheState->setEnabled(\Magento\PageCache\Model\Cache\Type::TYPE_IDENTIFIER, true);
/** @var $fpc \Magento\PageCache\Model\Cache\Type */
$fpc = $objectManager->get(\Magento\PageCache\Model\Cache\Type::class);
$fpc->clean();
}
}