Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MapperTest.php
Go to the documentation of this file.
1 <?php
7 
13 
17 class MapperTest extends \PHPUnit\Framework\TestCase
18 {
22  protected $model;
23 
27  protected $queryBuilder;
28 
32  protected $matchQueryBuilder;
33 
37  protected $filterBuilder;
38 
43  protected function setUp()
44  {
45  $this->queryBuilder = $this->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Query\Builder::class)
46  ->setMethods([
47  'initQuery',
48  'initAggregations',
49  ])
50  ->disableOriginalConstructor()
51  ->getMock();
52  $this->matchQueryBuilder = $this->getMockBuilder(
53  \Magento\Elasticsearch\SearchAdapter\Query\Builder\Match::class
54  )
55  ->setMethods(['build'])
56  ->disableOriginalConstructor()
57  ->getMock();
58  $this->filterBuilder = $this->getMockBuilder(\Magento\Elasticsearch\SearchAdapter\Filter\Builder::class)
59  ->disableOriginalConstructor()
60  ->getMock();
61  $this->queryBuilder->expects($this->any())
62  ->method('initQuery')
63  ->willReturn([
64  'body' => [
65  'query' => [],
66  ],
67  ]);
68  $this->queryBuilder->expects($this->any())
69  ->method('initAggregations')
70  ->willReturn([
71  'body' => [
72  'query' => [],
73  ],
74  ]);
75  $this->matchQueryBuilder->expects($this->any())
76  ->method('build')
77  ->willReturn([]);
78 
79  $objectManagerHelper = new ObjectManagerHelper($this);
80  $this->model = $objectManagerHelper->getObject(
81  \Magento\Elasticsearch\SearchAdapter\Mapper::class,
82  [
83  'queryBuilder' => $this->queryBuilder,
84  'matchQueryBuilder' => $this->matchQueryBuilder,
85  'filterBuilder' => $this->filterBuilder
86  ]
87  );
88  }
89 
94  public function testBuildQueryFailure()
95  {
96  $request = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
97  ->disableOriginalConstructor()
98  ->getMock();
99  $query = $this->getMockBuilder(\Magento\Framework\Search\Request\QueryInterface::class)
100  ->disableOriginalConstructor()
101  ->getMock();
102  $request->expects($this->once())
103  ->method('getQuery')
104  ->willReturn($query);
105  $query->expects($this->atLeastOnce())
106  ->method('getType')
107  ->willReturn('unknown');
108 
109  $this->model->buildQuery($request);
110  }
111 
121  public function testBuildQuery($queryType, $queryMock, $referenceType, $filterMock)
122  {
123  $request = $this->getMockBuilder(\Magento\Framework\Search\RequestInterface::class)
124  ->disableOriginalConstructor()
125  ->getMock();
126  $query = $this->getMockBuilder($queryMock)
127  ->setMethods(['getMust', 'getMustNot', 'getType', 'getShould', 'getReferenceType', 'getReference'])
128  ->disableOriginalConstructor()
129  ->getMock();
130  $matchQuery = $this->getMockBuilder(\Magento\Framework\Search\Request\Query\Match::class)
131  ->disableOriginalConstructor()
132  ->getMock();
133  $filterQuery = $this->getMockBuilder($filterMock)
134  ->disableOriginalConstructor()
135  ->getMock();
136  $request->expects($this->once())
137  ->method('getQuery')
138  ->willReturn($query);
139 
140  $query->expects($this->atLeastOnce())
141  ->method('getType')
142  ->willReturn($queryType);
143  $query->expects($this->any())
144  ->method('getMust')
145  ->willReturn([$matchQuery]);
146  $query->expects($this->any())
147  ->method('getShould')
148  ->willReturn([]);
149  $query->expects($this->any())
150  ->method('getMustNot')
151  ->willReturn([]);
152  $query->expects($this->any())
153  ->method('getReferenceType')
154  ->willReturn($referenceType);
155  $query->expects($this->any())
156  ->method('getReference')
157  ->willReturn($filterQuery);
158  $matchQuery->expects($this->any())
159  ->method('getType')
160  ->willReturn('matchQuery');
161  $filterQuery->expects($this->any())
162  ->method('getType')
163  ->willReturn('matchQuery');
164  $filterQuery->expects($this->any())
165  ->method('getType')
166  ->willReturn('matchQuery');
167  $this->filterBuilder->expects(($this->any()))
168  ->method('build')
169  ->willReturn([
170  'bool' => [
171  'must' => [],
172  ],
173  ]);
174 
175  $this->model->buildQuery($request);
176  }
177 
181  public function buildQueryDataProvider()
182  {
183  return [
184  [
185  'matchQuery', \Magento\Framework\Search\Request\Query\Match::class,
186  'query', \Magento\Framework\Search\Request\QueryInterface::class,
187  ],
188  [
189  'boolQuery', \Magento\Framework\Search\Request\Query\BoolExpression::class,
190  'query', \Magento\Framework\Search\Request\QueryInterface::class,
191  ],
192  [
193  'filteredQuery', \Magento\Framework\Search\Request\Query\Filter::class,
194  'query', \Magento\Framework\Search\Request\QueryInterface::class,
195  ],
196  [
197  'filteredQuery', \Magento\Framework\Search\Request\Query\Filter::class,
198  'filter', \Magento\Framework\Search\Request\FilterInterface::class,
199  ],
200  ];
201  }
202 }
testBuildQuery($queryType, $queryMock, $referenceType, $filterMock)
Definition: MapperTest.php:121