Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function search(SearchCriteriaInterface $searchCriteria)
 {
     $this->requestBuilder->setRequestName($searchCriteria->getRequestName());
     $scope = $this->scopeResolver->getScope();
     $this->requestBuilder->bindDimension('scope', $scope);
     foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
         foreach ($filterGroup->getFilters() as $filter) {
             $this->addFieldToFilter($filter->getField(), $filter->getValue());
         }
     }
     $this->requestBuilder->setFrom($searchCriteria->getCurrentPage() * $searchCriteria->getPageSize());
     $this->requestBuilder->setSize($searchCriteria->getPageSize());
     $request = $this->requestBuilder->create();
     $searchResponse = $this->searchEngine->search($request);
     return $this->searchResponseBuilder->build($searchResponse)->setSearchCriteria($searchCriteria);
 }
Esempio n. 2
0
 /**
  * Request limits test
  *
  * @magentoConfigFixture current_store catalog/search/engine mysql
  */
 public function testSearchLimit()
 {
     $this->requestBuilder->bind('wildcard_filter', 're');
     $this->requestBuilder->setFrom(1);
     $this->requestBuilder->setSize(2);
     $this->requestBuilder->setRequestName('one_wildcard');
     $queryResponse = $this->executeQuery();
     $this->assertEquals(2, $queryResponse->count());
 }
Esempio n. 3
0
 /**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testCreate()
 {
     $data = ['dimensions' => ['scope' => ['name' => 'scope', 'value' => 'default']], 'queries' => ['one_match_filters' => ['name' => 'one_match_filters', 'boost' => '2', 'queryReference' => [['clause' => 'must', 'ref' => 'fulltext_search_query'], ['clause' => 'must', 'ref' => 'fulltext_search_query2']], 'type' => 'boolQuery'], 'fulltext_search_query' => ['name' => 'fulltext_search_query', 'boost' => '5', 'value' => '$fulltext_search_query$', 'match' => [['field' => 'data_index', 'boost' => '2']], 'type' => 'matchQuery'], 'fulltext_search_query2' => ['name' => 'fulltext_search_query2', 'filterReference' => [['ref' => 'pid']], 'type' => 'filteredQuery']], 'filters' => ['pid' => ['name' => 'pid', 'filterReference' => [['clause' => 'should', 'ref' => 'pidm'], ['clause' => 'should', 'ref' => 'pidsh']], 'type' => 'boolFilter'], 'pidm' => ['name' => 'pidm', 'field' => 'product_id', 'type' => 'rangeFilter', 'from' => '$pidm_from$', 'to' => '$pidm_to$'], 'pidsh' => ['name' => 'pidsh', 'field' => 'product_id', 'type' => 'termFilter', 'value' => '$pidsh$']], 'from' => '10', 'size' => '10', 'query' => 'one_match_filters', 'index' => 'catalogsearch_fulltext', 'aggregations' => []];
     $requestName = 'rn';
     $this->requestBuilder->bind('fulltext_search_query', 'socks');
     $this->requestBuilder->bind('pidsh', 4);
     $this->requestBuilder->bind('pidm_from', 1);
     $this->requestBuilder->bind('pidm_to', 3);
     $this->requestBuilder->setRequestName($requestName);
     $this->requestBuilder->setSize(10);
     $this->requestBuilder->setFrom(10);
     $this->requestBuilder->bindDimension('scope', 'default');
     $this->binder->expects($this->once())->method('bind')->willReturn($data);
     $this->cleaner->expects($this->once())->method('clean')->willReturn($data);
     $this->requestMapper->expects($this->once())->method('getRootQuery')->willReturn([]);
     $this->objectManager->expects($this->at(0))->method('create')->willReturn($this->requestMapper);
     $this->objectManager->expects($this->at(2))->method('create')->willReturn($this->request);
     $this->config->expects($this->once())->method('get')->with($this->equalTo($requestName))->willReturn($data);
     $result = $this->requestBuilder->create();
     $this->assertInstanceOf('\\Magento\\Framework\\Search\\Request', $result);
 }