Esempio n. 1
0
 public function testGetDerivedQueries()
 {
     $this->matchContainerFactory->expects($this->once())->method('create')->willReturn('asdf');
     $result = $this->queryContainer->addMatchQuery($this->select, $this->requestQuery, Bool::QUERY_CONDITION_MUST);
     $this->assertEquals($this->select, $result);
     $queries = $this->queryContainer->getDerivedQueries();
     $this->assertCount(1, $queries);
     $this->assertEquals('asdf', reset($queries));
 }
    public function testBuild()
    {

        $this->scoreBuilder->expects($this->once())->method('build')->willReturn('score condition');
        $subSelect = $this->getMockBuilder('Magento\Framework\DB\Select')
            ->disableOriginalConstructor()
            ->getMock();
        $this->indexBuilder->expects($this->once())->method('build')->willReturn($subSelect);
        $subSelect->expects($this->once())->method('columns')->with('score condition');
        $this->request->expects($this->once())->method('getSize')->willReturn(1000);
        $subSelect->expects($this->once())->method('limit')->with(1000);

        $result = $this->queryContainer->addMatchQuery($this->select, $this->query, Bool::QUERY_CONDITION_MUST);
        $this->assertEquals($this->select, $result);
    }
Esempio n. 3
0
 /**
  * Process query
  *
  * @param ScoreBuilder $scoreBuilder
  * @param RequestQueryInterface $query
  * @param Select $select
  * @param string $conditionType
  * @param QueryContainer $queryContainer
  * @return Select
  * @throws \InvalidArgumentException
  */
 protected function processQuery(
     ScoreBuilder $scoreBuilder,
     RequestQueryInterface $query,
     Select $select,
     $conditionType,
     QueryContainer $queryContainer
 ) {
     switch ($query->getType()) {
         case RequestQueryInterface::TYPE_MATCH:
             /** @var MatchQuery $query */
             $select = $queryContainer->addMatchQuery(
                 $select,
                 $query,
                 $conditionType
             );
             break;
         case RequestQueryInterface::TYPE_BOOL:
             /** @var BoolQuery $query */
             $select = $this->processBoolQuery($scoreBuilder, $query, $select, $queryContainer);
             break;
         case RequestQueryInterface::TYPE_FILTER:
             /** @var FilterQuery $query */
             $select = $this->processFilterQuery($scoreBuilder, $query, $select, $conditionType, $queryContainer);
             break;
         default:
             throw new \InvalidArgumentException(sprintf('Unknown query type \'%s\'', $query->getType()));
     }
     return $select;
 }