123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Elasticsearch\Test\Unit\SearchAdapter;
- use Magento\Elasticsearch\SearchAdapter\Mapper;
- use Magento\Elasticsearch\SearchAdapter\Query\Builder as QueryBuilder;
- use Magento\Elasticsearch\SearchAdapter\Query\Builder\Match as MatchQueryBuilder;
- use Magento\Elasticsearch\SearchAdapter\Filter\Builder as FilterBuilder;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class MapperTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var Mapper
- */
- protected $model;
- /**
- * @var QueryBuilder|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $queryBuilder;
- /**
- * @var MatchQueryBuilder|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $matchQueryBuilder;
- /**
- * @var FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $filterBuilder;
- /**
- * Setup method
- * @return void
- */
- protected function setUp()
- {
- $this->queryBuilder = $this->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Query\Builder::class)
- ->setMethods([
- 'initQuery',
- 'initAggregations',
- ])
- ->disableOriginalConstructor()
- ->getMock();
- $this->matchQueryBuilder = $this->getMockBuilder(
- \Magento\Elasticsearch\SearchAdapter\Query\Builder\Match::class
- )
- ->setMethods(['build'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->filterBuilder = $this->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Filter\Builder::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->queryBuilder->expects($this->any())
- ->method('initQuery')
- ->willReturn([
- 'body' => [
- 'query' => [],
- ],
- ]);
- $this->queryBuilder->expects($this->any())
- ->method('initAggregations')
- ->willReturn([
- 'body' => [
- 'query' => [],
- ],
- ]);
- $this->matchQueryBuilder->expects($this->any())
- ->method('build')
- ->willReturn([]);
- $objectManagerHelper = new ObjectManagerHelper($this);
- $this->model = $objectManagerHelper->getObject(
- \Magento\Elasticsearch\SearchAdapter\Mapper::class,
- [
- 'queryBuilder' => $this->queryBuilder,
- 'matchQueryBuilder' => $this->matchQueryBuilder,
- 'filterBuilder' => $this->filterBuilder
- ]
- );
- }
- /**
- * Test buildQuery() method with exception
- * @expectedException \InvalidArgumentException
- */
- public function testBuildQueryFailure()
- {
- $request = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $query = $this->getMockBuilder(\Magento\Framework\Search\Request\QueryInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $request->expects($this->once())
- ->method('getQuery')
- ->willReturn($query);
- $query->expects($this->atLeastOnce())
- ->method('getType')
- ->willReturn('unknown');
- $this->model->buildQuery($request);
- }
- /**
- * Test buildQuery() method
- *
- * @param string $queryType
- * @param string $queryMock
- * @param string $referenceType
- * @param string $filterMock
- * @dataProvider buildQueryDataProvider
- */
- public function testBuildQuery($queryType, $queryMock, $referenceType, $filterMock)
- {
- $request = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
- ->disableOriginalConstructor()
- ->getMock();
- $query = $this->getMockBuilder($queryMock)
- ->setMethods(['getMust', 'getMustNot', 'getType', 'getShould', 'getReferenceType', 'getReference'])
- ->disableOriginalConstructor()
- ->getMock();
- $matchQuery = $this->getMockBuilder(\Magento\Framework\Search\Request\Query\Match::class)
- ->disableOriginalConstructor()
- ->getMock();
- $filterQuery = $this->getMockBuilder($filterMock)
- ->disableOriginalConstructor()
- ->getMock();
- $request->expects($this->once())
- ->method('getQuery')
- ->willReturn($query);
- $query->expects($this->atLeastOnce())
- ->method('getType')
- ->willReturn($queryType);
- $query->expects($this->any())
- ->method('getMust')
- ->willReturn([$matchQuery]);
- $query->expects($this->any())
- ->method('getShould')
- ->willReturn([]);
- $query->expects($this->any())
- ->method('getMustNot')
- ->willReturn([]);
- $query->expects($this->any())
- ->method('getReferenceType')
- ->willReturn($referenceType);
- $query->expects($this->any())
- ->method('getReference')
- ->willReturn($filterQuery);
- $matchQuery->expects($this->any())
- ->method('getType')
- ->willReturn('matchQuery');
- $filterQuery->expects($this->any())
- ->method('getType')
- ->willReturn('matchQuery');
- $filterQuery->expects($this->any())
- ->method('getType')
- ->willReturn('matchQuery');
- $this->filterBuilder->expects(($this->any()))
- ->method('build')
- ->willReturn([
- 'bool' => [
- 'must' => [],
- ],
- ]);
- $this->model->buildQuery($request);
- }
- /**
- * @return array
- */
- public function buildQueryDataProvider()
- {
- return [
- [
- 'matchQuery', \Magento\Framework\Search\Request\Query\Match::class,
- 'query', \Magento\Framework\Search\Request\QueryInterface::class,
- ],
- [
- 'boolQuery', \Magento\Framework\Search\Request\Query\BoolExpression::class,
- 'query', \Magento\Framework\Search\Request\QueryInterface::class,
- ],
- [
- 'filteredQuery', \Magento\Framework\Search\Request\Query\Filter::class,
- 'query', \Magento\Framework\Search\Request\QueryInterface::class,
- ],
- [
- 'filteredQuery', \Magento\Framework\Search\Request\Query\Filter::class,
- 'filter', \Magento\Framework\Search\Request\FilterInterface::class,
- ],
- ];
- }
- }
|