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
            ]
        );
    }
Exemple #3
0
 /**
  * @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]);
 }
Exemple #5
0
 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);
 }