public function testBuildMatchQuery() { $query = $this->createMatchQuery(); $this->request->expects($this->once()) ->method('getDimensions') ->will( $this->returnValue([$this->createDimension()]) ); $this->dimensionsBuilder->expects($this->any()) ->method('build') ->will($this->returnValue('a = b')); $this->queryContainer->expects($this->any())->method('addMatchQuery') ->with( $this->equalTo($this->select), $this->equalTo($query), $this->equalTo(Bool::QUERY_CONDITION_MUST) ) ->will($this->returnValue($this->select)); $this->request->expects($this->once())->method('getQuery')->will($this->returnValue($query)); $this->select->expects($this->once())->method('columns')->will($this->returnValue($this->select)); $response = $this->mapper->buildQuery($this->request); $this->assertEquals($this->select, $response); }
protected function setUp() { $helper = new ObjectManager($this); $this->select = $this->getMockBuilder('Magento\Framework\DB\Select') ->disableOriginalConstructor() ->getMock(); $this->scoreBuilder = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\ScoreBuilder') ->disableOriginalConstructor() ->getMock(); $this->scoreBuilderFactory = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\ScoreBuilderFactory') ->setMethods(['create']) ->disableOriginalConstructor() ->getMock(); $this->scoreBuilderFactory->expects($this->any())->method('create')->willReturn($this->scoreBuilder); $this->query = $this->getMockBuilder('Magento\Framework\Search\Request\QueryInterface') ->disableOriginalConstructor() ->getMock(); $this->matchBuilder = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\Query\Builder\Match') ->setMethods(['build']) ->disableOriginalConstructor() ->getMock(); $this->matchBuilder->expects($this->any())->method('build')->willReturnArgument(1); $this->indexBuilder = $this->getMockBuilder('Magento\Framework\Search\Adapter\Mysql\IndexBuilderInterface') ->setMethods(['build']) ->disableOriginalConstructor() ->getMock(); $this->request = $this->getMockBuilder('\Magento\Framework\Search\RequestInterface') ->disableOriginalConstructor() ->getMock(); $this->queryContainer = $helper->getObject( 'Magento\Framework\Search\Adapter\Mysql\Query\QueryContainer', [ 'scoreBuilderFactory' => $this->scoreBuilderFactory, 'matchBuilder' => $this->matchBuilder, 'indexBuilder' => $this->indexBuilder, 'request' => $this->request ] ); }
/** * @param $query * @throws \Exception * @dataProvider buildQueryDataProvider */ public function testBuildQuery($query, $derivedQueries = []) { $this->filterBuilder->expects($this->any())->method('build')->will($this->returnValue('(1)')); $this->queryContainer->expects($this->any())->method('getDerivedQueries')->willReturn($derivedQueries); $this->select->expects($this->any())->method('columns')->will($this->returnValue($this->select)); $this->request->expects($this->once())->method('getQuery')->will($this->returnValue($query)); $response = $this->mapper->buildQuery($this->request); $this->assertEquals($this->select, $response); }
/** * @param Select $select */ private function mockBuilders(Select $select) { $helper = new ObjectManager($this); $this->scoreBuilder = $this->getMockBuilder('Magento\\Framework\\Search\\Adapter\\Mysql\\ScoreBuilder')->setMethods(['clear'])->disableOriginalConstructor()->getMock(); $this->scoreBuilderFactory = $this->getMockBuilder('Magento\\Framework\\Search\\Adapter\\Mysql\\ScoreBuilderFactory')->setMethods(['create'])->disableOriginalConstructor()->getMock(); $this->scoreBuilderFactory->expects($this->any())->method('create')->will($this->returnValue($this->scoreBuilder)); $this->filterBuilder = $this->getMockBuilder('Magento\\Framework\\Search\\Adapter\\Mysql\\Filter\\Builder')->setMethods(['build'])->disableOriginalConstructor()->getMock(); $this->matchBuilder = $this->getMockBuilder('\\Magento\\Framework\\Search\\Adapter\\Mysql\\Query\\Builder\\Match')->setMethods(['build'])->disableOriginalConstructor()->getMock(); $this->matchBuilder->expects($this->any())->method('build')->willReturnArgument(1); $this->indexBuilder = $this->getMockBuilder('\\Magento\\Framework\\Search\\Adapter\\Mysql\\IndexBuilderInterface')->disableOriginalConstructor()->setMethods(['build'])->getMockForAbstractClass(); $this->indexBuilder->expects($this->any())->method('build')->will($this->returnValue($select)); $temporaryStorageFactory = $this->getMockBuilder('\\Magento\\Framework\\Search\\Adapter\\Mysql\\TemporaryStorageFactory')->setMethods(['create'])->disableOriginalConstructor()->getMock(); $temporaryStorageFactory->expects($this->any())->method('create')->willReturn($this->temporaryStorage); $queryContainerFactory = $this->getMockBuilder('Magento\\Framework\\Search\\Adapter\\Mysql\\Query\\QueryContainerFactory')->setMethods(['create'])->disableOriginalConstructor()->getMock(); $queryContainerFactory->expects($this->any())->method('create')->willReturn($this->queryContainer); $entityMetadata = $this->getMockBuilder('\\Magento\\Framework\\Search\\EntityMetadata')->setMethods(['getEntityId'])->disableOriginalConstructor()->getMock(); $entityMetadata->expects($this->any())->method('getEntityId')->willReturn(self::METADATA_ENTITY_ID); $this->mapper = $helper->getObject('Magento\\Framework\\Search\\Adapter\\Mysql\\Mapper', ['resource' => $this->resource, 'scoreBuilderFactory' => $this->scoreBuilderFactory, 'queryContainerFactory' => $queryContainerFactory, 'filterBuilder' => $this->filterBuilder, 'matchBuilder' => $this->matchBuilder, 'indexProviders' => [self::INDEX_NAME => $this->indexBuilder], 'temporaryStorageFactory' => $temporaryStorageFactory, 'entityMetadata' => $entityMetadata]); }
public function testBuildBoolQuery() { $query = $this->createBoolQuery(); $this->request->expects($this->once())->method('getQuery')->will($this->returnValue($query)); $this->matchQueryBuilder->expects($this->exactly(4))->method('build')->will($this->returnValue($this->select)); $matchQuery = $this->createMatchQuery(); $filterMatchQuery = $this->createFilterQuery(); $filterMatchQuery->expects($this->once())->method('getReferenceType')->will($this->returnValue(Filter::REFERENCE_QUERY)); $filterMatchQuery->expects($this->once())->method('getReference')->will($this->returnValue($matchQuery)); $filterQuery = $this->createFilterQuery(); $filterQuery->expects($this->once())->method('getReferenceType')->will($this->returnValue(Filter::REFERENCE_FILTER)); $filterQuery->expects($this->once())->method('getReference')->will($this->returnValue($this->filter)); $this->request->expects($this->once())->method('getQuery')->will($this->returnValue($query)); $this->filterBuilder->expects($this->once())->method('build')->will($this->returnValue('(1)')); $this->select->expects($this->once())->method('columns')->will($this->returnValue($this->select)); $query->expects($this->once())->method('getMust')->will($this->returnValue([$this->createMatchQuery(), $this->createFilterQuery()])); $query->expects($this->once())->method('getShould')->will($this->returnValue([$this->createMatchQuery(), $filterMatchQuery])); $query->expects($this->once())->method('getMustNot')->will($this->returnValue([$this->createMatchQuery(), $filterQuery])); $response = $this->mapper->buildQuery($this->request); $this->assertEquals($this->select, $response); }