Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CleanerTest.php
Go to the documentation of this file.
1 <?php
8 
10 
11 class CleanerTest extends \PHPUnit\Framework\TestCase
12 {
14  private $status;
15 
19  private $cleaner;
20 
21  protected function setUp()
22  {
23  $helper = new ObjectManager($this);
24 
25  $this->status = $this->getMockBuilder(\Magento\Framework\Search\Request\Aggregation\StatusInterface::class)
26  ->disableOriginalConstructor()
27  ->setMethods(['isEnabled'])
28  ->getMockForAbstractClass();
29 
30  $this->cleaner = $helper->getObject(
31  \Magento\Framework\Search\Request\Cleaner::class,
32  ['aggregationStatus' => $this->status]
33  );
34  }
35 
36  public function testClean()
37  {
38  $this->status->expects($this->once())
39  ->method('isEnabled')
40  ->will($this->returnValue(true));
41  $requestData = [
42  'query' => 'bool_query',
43  'queries' => [
44  'bool_query' => [
45  'queryReference' => [
46  ['ref' => 'bool_query_rm'],
47  ['ref' => 'match_query'],
48  ['ref' => 'filtered_query_to_filter2'],
49  ],
50  'type' => 'boolQuery',
51  ],
52  'match_query' => ['value' => 'ok', 'type' => 'matchQuery', 'is_bind' => true],
53  'bool_query_rm' => [
54  'queryReference' => [
55  ['ref' => 'match_query_rm'],
56  ['ref' => 'filtered_query_to_query'],
57  ['ref' => 'filtered_query_to_filter'],
58  ],
59  'type' => 'boolQuery',
60  ],
61  'match_query_rm' => ['value' => '$some$', 'type' => 'matchQuery'],
62  'match_query_rm2' => ['value' => '$some2$', 'type' => 'matchQuery'],
63  'filtered_query_to_query' => [
64  'queryReference' => [['ref' => 'match_query_rm2']],
65  'type' => 'filteredQuery',
66  ],
67  'filtered_query_to_filter' => [
68  'filterReference' => [['ref' => 'bool_filter']],
69  'type' => 'filteredQuery',
70  ],
71  'filtered_query_to_filter2' => [
72  'filterReference' => [['ref' => 'bool_filter2']],
73  'type' => 'filteredQuery',
74  ],
75  ],
76  'filters' => [
77  'bool_filter' => [
78  'filterReference' => [['ref' => 'term_filter'], ['ref' => 'range_filter']],
79  'type' => 'boolFilter',
80  ],
81  'term_filter' => ['value' => '$val$', 'type' => 'termFilter'],
82  'range_filter' => ['from' => '$from$', 'to' => '$to$', 'type' => 'rangeFilter'],
83  'bool_filter2' => [
84  'filterReference' => [['ref' => 'term_filter2']],
85  'type' => 'boolFilter',
86  ],
87  'term_filter2' => ['value' => 'value_good', 'type' => 'termFilter', 'is_bind' => true],
88  ],
89  ];
90  $exceptedRequestData = [
91  'query' => 'bool_query',
92  'queries' => [
93  'bool_query' => [
94  'queryReference' => [['ref' => 'match_query'], ['ref' => 'filtered_query_to_filter2']],
95  'type' => 'boolQuery',
96  ],
97  'match_query' => ['value' => 'ok', 'type' => 'matchQuery', 'is_bind' => true],
98  'filtered_query_to_filter2' => [
99  'filterReference' => [['ref' => 'bool_filter2']],
100  'type' => 'filteredQuery',
101  ],
102  ],
103  'filters' => [
104  'bool_filter2' => [
105  'filterReference' => [['ref' => 'term_filter2']],
106  'type' => 'boolFilter',
107  ],
108  'term_filter2' => ['value' => 'value_good', 'type' => 'termFilter', 'is_bind' => true],
109  ],
110  ];
111 
112  $result = $this->cleaner->clean($requestData);
113 
114  $this->assertEquals($exceptedRequestData, $result);
115  }
116 
118  {
119  $this->status->expects($this->once())
120  ->method('isEnabled')
121  ->will($this->returnValue(false));
122  $requestData = [
123  'query' => 'bool_query',
124  'queries' => [
125  'bool_query' => [
126  'queryReference' => [
127  ['ref' => 'bool_query_rm'],
128  ['ref' => 'match_query'],
129  ['ref' => 'filtered_query_to_filter2'],
130  ],
131  'type' => 'boolQuery',
132  ],
133  'match_query' => ['value' => 'ok', 'type' => 'matchQuery', 'is_bind' => true],
134  'bool_query_rm' => [
135  'queryReference' => [
136  ['ref' => 'match_query_rm'],
137  ['ref' => 'filtered_query_to_query'],
138  ['ref' => 'filtered_query_to_filter'],
139  ],
140  'type' => 'boolQuery',
141  ],
142  'match_query_rm' => ['value' => '$some$', 'type' => 'matchQuery'],
143  'match_query_rm2' => ['value' => '$some2$', 'type' => 'matchQuery'],
144  'filtered_query_to_query' => [
145  'queryReference' => [['ref' => 'match_query_rm2']],
146  'type' => 'filteredQuery',
147  ],
148  'filtered_query_to_filter' => [
149  'filterReference' => [['ref' => 'bool_filter']],
150  'type' => 'filteredQuery',
151  ],
152  'filtered_query_to_filter2' => [
153  'filterReference' => [['ref' => 'bool_filter2']],
154  'type' => 'filteredQuery',
155  ],
156  ],
157  'filters' => [
158  'bool_filter' => [
159  'filterReference' => [['ref' => 'term_filter'], ['ref' => 'range_filter']],
160  'type' => 'boolFilter',
161  ],
162  'term_filter' => ['value' => '$val$', 'type' => 'termFilter'],
163  'range_filter' => ['from' => '$from$', 'to' => '$to$', 'type' => 'rangeFilter'],
164  'bool_filter2' => [
165  'filterReference' => [['ref' => 'term_filter2']],
166  'type' => 'boolFilter',
167  ],
168  'term_filter2' => ['value' => 'value_good', 'type' => 'termFilter', 'is_bind' => true],
169  ],
170  ];
171  $exceptedRequestData = [
172  'query' => 'bool_query',
173  'queries' => [
174  'bool_query' => [
175  'queryReference' => [['ref' => 'match_query'], ['ref' => 'filtered_query_to_filter2']],
176  'type' => 'boolQuery',
177  ],
178  'match_query' => ['value' => 'ok', 'type' => 'matchQuery', 'is_bind' => true],
179  'filtered_query_to_filter2' => [
180  'filterReference' => [['ref' => 'bool_filter2']],
181  'type' => 'filteredQuery',
182  ],
183  ],
184  'filters' => [
185  'bool_filter2' => [
186  'filterReference' => [['ref' => 'term_filter2']],
187  'type' => 'boolFilter',
188  ],
189  'term_filter2' => ['value' => 'value_good', 'type' => 'termFilter', 'is_bind' => true],
190  ],
191  'aggregations' => [],
192  ];
193 
194  $result = $this->cleaner->clean($requestData);
195 
196  $this->assertEquals($exceptedRequestData, $result);
197  }
198 
203  public function testCleanFilteredQueryType()
204  {
205  $requestData = [
206  'query' => 'filtered_query',
207  'queries' => [
208  'filtered_query' => [
209  'type' => 'filteredQuery',
210  ],
211  ],
212  'filters' => [],
213  ];
214 
215  $this->cleaner->clean($requestData);
216  }
217 
222  public function testCleanQueryType()
223  {
224  $requestData = [
225  'query' => 'filtered_query',
226  'queries' => [
227  'filtered_query' => [
228  'type' => 'fQuery',
229  ],
230  ],
231  'filters' => [],
232  ];
233 
234  $this->cleaner->clean($requestData);
235  }
236 
241  public function testCleanFilterType()
242  {
243  $requestData = [
244  'query' => 'filtered_query',
245  'queries' => [
246  'filtered_query' => [
247  'filterReference' => [['ref' => 'filter']],
248  'type' => 'filteredQuery',
249  ],
250  ],
251  'filters' => [
252  'filter' => [
253  'type' => 'fType',
254  ],
255  ],
256  ];
257 
258  $this->cleaner->clean($requestData);
259  }
260 
265  public function testCleanQueryCycle()
266  {
267  $requestData = [
268  'query' => 'filtered_query',
269  'queries' => [
270  'filtered_query' => [
271  'queryReference' => [['ref' => 'filtered_query']],
272  'type' => 'boolQuery',
273  ],
274  ],
275  'filters' => [],
276  ];
277 
278  $this->cleaner->clean($requestData);
279  }
280 
284  public function testCleanFilterCycle()
285  {
286  $requestData = [
287  'query' => 'filtered_query',
288  'queries' => [
289  'filtered_query' => [
290  'filterReference' => [['ref' => 'bool_filter']],
291  'type' => 'filteredQuery',
292  ],
293  ],
294  'filters' => [
295  'bool_filter' => [
296  'filterReference' => [['ref' => 'bool_filter']],
297  'type' => 'boolFilter',
298  ],
299  ],
300  ];
301 
302  $this->cleaner->clean($requestData);
303  }
304 
309  public function testCleanFilterNotFound()
310  {
311  $requestData = [
312  'query' => 'filtered_query',
313  'queries' => [
314  'filtered_query' => [
315  'filterReference' => [['ref' => 'bool_filter']],
316  'type' => 'filteredQuery',
317  ],
318  ],
319  'filters' => [],
320  ];
321 
322  $this->cleaner->clean($requestData);
323  }
324 
329  public function testCleanQueryNotExists()
330  {
331  $requestData = [
332  'query' => 'test',
333  'queries' => [],
334  'filters' => [],
335  ];
336 
337  $this->cleaner->clean($requestData);
338  }
339 
345  {
346  $this->status->expects($this->once())
347  ->method('isEnabled')
348  ->will($this->returnValue(true));
349  $requestData = [
350  'query' => 'bool_query',
351  'queries' => [
352  'bool_query' => [
353  'queryReference' => [
354  ['ref' => 'bool_query_rm'],
355  ['ref' => 'filtered_query_to_filter2'],
356  ],
357  'type' => 'boolQuery',
358  ],
359  'bool_query_rm' => [
360  'queryReference' => [
361  ['ref' => 'match_query_rm'],
362  ['ref' => 'filtered_query_to_query'],
363  ['ref' => 'filtered_query_to_filter'],
364  ],
365  'type' => 'boolQuery',
366  ],
367  'match_query_rm' => ['value' => '$some$', 'type' => 'matchQuery'],
368  'match_query_rm2' => ['value' => '$some2$', 'type' => 'matchQuery'],
369  'filtered_query_to_query' => [
370  'queryReference' => [['ref' => 'match_query_rm2']],
371  'type' => 'filteredQuery',
372  ],
373  'filtered_query_to_filter' => [
374  'filterReference' => [['ref' => 'bool_filter']],
375  'type' => 'filteredQuery',
376  ],
377  'filtered_query_to_filter2' => [
378  'filterReference' => [['ref' => 'bool_filter2']],
379  'type' => 'filteredQuery',
380  ],
381  ],
382  'filters' => [
383  'bool_filter' => [
384  'filterReference' => [['ref' => 'term_filter'], ['ref' => 'range_filter']],
385  'type' => 'boolFilter',
386  ],
387  'term_filter' => ['value' => '$val$', 'type' => 'termFilter'],
388  'range_filter' => ['from' => '$from$', 'to' => '$to$', 'type' => 'rangeFilter'],
389  'bool_filter2' => [
390  'filterReference' => [['ref' => 'term_filter2']],
391  'type' => 'boolFilter',
392  ],
393  'term_filter2' => ['value' => '$val$', 'type' => 'termFilter'],
394  ],
395  ];
396 
397  $this->cleaner->clean($requestData);
398  }
399 }
$helper
Definition: iframe.phtml:13