コード例 #1
0
 public function testSearch()
 {
     $requestName = 'requestName';
     $scope = 333;
     $filterField = 'filterField';
     $filterValue = 'filterValue';
     $filter = $this->getMockBuilder('Magento\\Framework\\Api\\Filter')->disableOriginalConstructor()->getMock();
     $filter->expects($this->once())->method('getField')->willReturn($filterField);
     $filter->expects($this->once())->method('getValue')->willReturn($filterValue);
     $filterGroup = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\FilterGroup')->disableOriginalConstructor()->getMock();
     $filterGroup->expects($this->once())->method('getFilters')->willReturn([$filter]);
     $searchCriteria = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchCriteriaInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $searchCriteria->expects($this->once())->method('getRequestName')->willReturn($requestName);
     $searchCriteria->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroup]);
     $searchResult = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchResult')->disableOriginalConstructor()->getMockForAbstractClass();
     $request = $this->getMockBuilder('Magento\\Framework\\Search\\RequestInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $response = $this->getMockBuilder('Magento\\Framework\\Search\\ResponseInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $this->requestBuilder->expects($this->once())->method('setRequestName')->with($requestName);
     $this->requestBuilder->expects($this->once())->method('bindDimension')->with('scope', $scope);
     $this->requestBuilder->expects($this->any())->method('bind');
     $this->requestBuilder->expects($this->once())->method('create')->willReturn($request);
     $this->searchEngine->expects($this->once())->method('search')->with($request)->willReturn($response);
     $this->searchResponseBuilder->expects($this->once())->method('build')->with($response)->willReturn($searchResult);
     $this->scopeResolver->expects($this->once())->method('getScope')->willReturn($scope);
     $searchResult = $this->model->search($searchCriteria);
     $this->assertInstanceOf('Magento\\Framework\\Api\\Search\\SearchResultInterface', $searchResult);
 }
コード例 #2
0
ファイル: SearchTest.php プロジェクト: Doability/magento2dev
 public function testSearch()
 {
     $requestName = 'requestName';
     $scopeId = 333;
     $filters = [$this->createFilterMock('array_filter', ['arrayValue1', 'arrayValue2']), $this->createFilterMock('simple_filter', 'filterValue'), $this->createFilterMock('from_filter', ['from' => 30]), $this->createFilterMock('to_filter', ['to' => 100]), $this->createFilterMock('range_filter', ['from' => 60, 'to' => 82])];
     $scope = $this->getMockBuilder('Magento\\Framework\\App\\ScopeInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $filterGroup = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\FilterGroup')->disableOriginalConstructor()->getMock();
     $filterGroup->expects($this->once())->method('getFilters')->willReturn($filters);
     $searchCriteria = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchCriteriaInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $searchCriteria->expects($this->once())->method('getRequestName')->willReturn($requestName);
     $searchCriteria->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroup]);
     $searchResult = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchResult')->disableOriginalConstructor()->getMockForAbstractClass();
     $request = $this->getMockBuilder('Magento\\Framework\\Search\\RequestInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $response = $this->getMockBuilder('Magento\\Framework\\Search\\ResponseInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $this->requestBuilder->expects($this->once())->method('setRequestName')->with($requestName);
     $this->requestBuilder->expects($this->once())->method('bindDimension')->with('scope', $scopeId);
     $this->requestBuilder->expects($this->exactly(6))->method('bind');
     $this->requestBuilder->expects($this->once())->method('create')->willReturn($request);
     $this->searchEngine->expects($this->once())->method('search')->with($request)->willReturn($response);
     $this->searchResponseBuilder->expects($this->once())->method('build')->with($response)->willReturn($searchResult);
     $this->scopeResolver->expects($this->once())->method('getScope')->willReturn($scope);
     $scope->expects($this->once())->method('getId')->willReturn($scopeId);
     $searchResult = $this->model->search($searchCriteria);
     $this->assertInstanceOf('Magento\\Framework\\Api\\Search\\SearchResultInterface', $searchResult);
 }
コード例 #3
0
 public function testBuild()
 {
     $documentId = 333;
     $fieldName = 'fieldName';
     $fieldValue = 'fieldValue';
     $aggregations = ['aggregations'];
     $document = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\DocumentInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $document->expects($this->once())->method('setCustomAttribute')->with($fieldName, $fieldValue);
     $document->expects($this->once())->method('setId')->with($documentId);
     $this->documentFactory->expects($this->once())->method('create')->willReturn($document);
     /** @var SearchResultInterface|\PHPUnit_Framework_MockObject_MockObject $searchResult */
     $searchResult = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchResultInterface')->disableOriginalConstructor()->getMockForAbstractClass();
     $searchResult->expects($this->once())->method('setItems')->with([$document]);
     $searchResult->expects($this->once())->method('setAggregations')->with($aggregations);
     $this->searchResultFactory->expects($this->once())->method('create')->willReturn($searchResult);
     $field = $this->getMockBuilder('Magento\\Framework\\Search\\DocumentField')->disableOriginalConstructor()->getMock();
     $field->expects($this->once())->method('getName')->willReturn($fieldName);
     $field->expects($this->once())->method('getValue')->willReturn($fieldValue);
     $responseDocument = $this->getMockBuilder('Magento\\Framework\\Search\\Document')->disableOriginalConstructor()->getMock();
     $responseDocument->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([$field]));
     $responseDocument->expects($this->once())->method('getId')->willReturn($documentId);
     /** @var QueryResponse|\PHPUnit_Framework_MockObject_MockObject $response */
     $response = $this->getMockBuilder('Magento\\Framework\\Search\\Response\\QueryResponse')->setMethods(['getIterator', 'getAggregations'])->disableOriginalConstructor()->getMockForAbstractClass();
     $response->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([$responseDocument]));
     $response->expects($this->once())->method('getAggregations')->willReturn($aggregations);
     $result = $this->model->build($response);
     $this->assertInstanceOf('Magento\\Framework\\Api\\Search\\SearchResultInterface', $result);
 }
コード例 #4
0
ファイル: Search.php プロジェクト: pradeep-wagento/magento2
 /**
  * {@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);
 }