Ejemplo n.º 1
0
 /**
  * Process filter query
  *
  * @param ScoreBuilder $scoreBuilder
  * @param FilterQuery $query
  * @param Select $select
  * @param string $conditionType
  * @param QueryContainer $queryContainer
  * @return Select
  */
 private function processFilterQuery(
     ScoreBuilder $scoreBuilder,
     FilterQuery $query,
     Select $select,
     $conditionType,
     QueryContainer $queryContainer
 ) {
     $scoreBuilder->startQuery();
     switch ($query->getReferenceType()) {
         case FilterQuery::REFERENCE_QUERY:
             $select = $this->processQuery(
                 $scoreBuilder,
                 $query->getReference(),
                 $select,
                 $conditionType,
                 $queryContainer
             );
             $scoreBuilder->endQuery($query->getBoost());
             break;
         case FilterQuery::REFERENCE_FILTER:
             $filterCondition = $this->filterBuilder->build($query->getReference(), $conditionType, $queryContainer);
             if ($filterCondition) {
                 $select->where($filterCondition);
             }
             break;
     }
     $scoreBuilder->endQuery($query->getBoost());
     return $select;
 }
Ejemplo n.º 2
0
 /**
  * @expectedException \InvalidArgumentException
  */
 public function testUnknownFilterType()
 {
     /** @var FilterInterface|\PHPUnit_Framework_MockObject_MockObject $filter */
     $filter = $this->getMockBuilder('Magento\\Framework\\Search\\Request\\FilterInterface')->setMethods(['getType'])->getMockForAbstractClass();
     $filter->expects($this->any())->method('getType')->will($this->returnValue('unknownType'));
     $this->builder->build($filter, RequestBoolQuery::QUERY_CONDITION_MUST);
 }
Ejemplo n.º 3
0
 /**
  * @expectedException \InvalidArgumentException
  * @expectedExceptionMessage Unknown filter type 'unknownType'
  */
 public function testUnknownFilterType()
 {
     /** @var \Magento\Framework\Search\Request\FilterInterface|\PHPUnit_Framework_MockObject_MockObject $filter */
     $filter = $this->getMockBuilder('Magento\\Framework\\Search\\Request\\FilterInterface')->setMethods(['getType'])->getMockForAbstractClass();
     $filter->expects($this->exactly(2))->method('getType')->will($this->returnValue('unknownType'));
     $this->builder->build($filter);
 }
Ejemplo n.º 4
0
 /**
  * @expectedException \InvalidArgumentException
  */
 public function testUnknownFilterType()
 {
     /** @var FilterInterface|\PHPUnit_Framework_MockObject_MockObject $filter */
     $filter = $this->getMockBuilder('Magento\Framework\Search\Request\FilterInterface')
         ->setMethods(['getType'])
         ->getMockForAbstractClass();
     $filter->expects($this->any())
         ->method('getType')
         ->will($this->returnValue('unknownType'));
     $queryContainer = $this->getMockBuilder('\Magento\Framework\Search\Adapter\Mysql\Query\QueryContainer')
         ->disableOriginalConstructor()
         ->getMock();
     $this->builder->build($filter, RequestBoolQuery::QUERY_CONDITION_MUST, $queryContainer);
 }
Ejemplo n.º 5
0
 /**
  * Process filter query
  *
  * @param ScoreBuilder $scoreBuilder
  * @param FilterQuery $query
  * @param Select $select
  * @param bool $isNot
  * @return Select
  */
 private function processFilterQuery(ScoreBuilder $scoreBuilder, FilterQuery $query, Select $select, $isNot)
 {
     switch ($query->getReferenceType()) {
         case FilterQuery::REFERENCE_QUERY:
             $scoreBuilder->startQuery();
             $select = $this->processQuery($scoreBuilder, $query->getReference(), $select, $isNot);
             $scoreBuilder->endQuery($query->getBoost());
             break;
         case FilterQuery::REFERENCE_FILTER:
             $filterCondition = $this->filterBuilder->build($query->getReference());
             if ($isNot === true) {
                 $filterCondition = '!' . $filterCondition;
             }
             $select->where($filterCondition);
             $scoreBuilder->addCondition(1, $query->getBoost());
             break;
     }
     return $select;
 }