Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FullTextSearchCheckTest.php
Go to the documentation of this file.
1 <?php
8 
9 class FullTextSearchCheckTest extends \PHPUnit\Framework\TestCase
10 {
14  private $fullTextSearchCheck;
15 
16  public function setUp()
17  {
18  $this->fullTextSearchCheck = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))
19  ->getObject(\Magento\CatalogSearch\Model\Search\QueryChecker\FullTextSearchCheck::class);
20  }
21 
28  public function testPositiveCheck($query, $errorMsg)
29  {
30  $this->assertTrue(
31  $this->fullTextSearchCheck->isRequiredForQuery($query),
32  $errorMsg
33  );
34  }
35 
42  public function testNegativeCheck($query, $errorMsg)
43  {
44  $this->assertFalse(
45  $this->fullTextSearchCheck->isRequiredForQuery($query),
46  $errorMsg
47  );
48  }
49 
54  {
55  $matchQueryMock = $this->getMockBuilder(\Magento\Framework\Search\Request\QueryInterface::class)
56  ->disableOriginalConstructor()
57  ->setMethods(['getType'])
58  ->getMockForAbstractClass();
59 
60  $matchQueryMock->expects($this->any())
61  ->method('getType')
62  ->willReturn('42');
63 
64  $this->fullTextSearchCheck->isRequiredForQuery($matchQueryMock);
65  }
66 
71  {
72  $filterMock = $this->getFilterQueryMock();
73 
74  $filterMock->expects($this->any())
75  ->method('getReferenceType')
76  ->willReturn('42');
77 
78  $this->fullTextSearchCheck->isRequiredForQuery($filterMock);
79  }
80 
84  public function positiveDataProvider()
85  {
86  $boolQueryMock = $this->getBoolQueryMock();
87 
88  $boolQueryMock->expects($this->any())
89  ->method('getShould')
90  ->willReturn([]);
91 
92  $boolQueryMock->expects($this->any())
93  ->method('getMust')
94  ->willReturn([$this->getMatchQueryMock()]);
95 
96  $filterMock = $this->getFilterQueryMock();
97 
98  $filterMock->expects($this->any())
99  ->method('getReferenceType')
100  ->willReturn(\Magento\Framework\Search\Request\Query\Filter::REFERENCE_QUERY);
101 
102  $filterMock->expects($this->any())
103  ->method('getReference')
104  ->willReturn($this->getMatchQueryMock());
105 
106  return [
107  [
108  $this->getMatchQueryMock(),
109  'Testing match query'
110  ], [
111  $boolQueryMock,
112  'Testing bool query'
113  ], [
114  $filterMock,
115  'Testing filter query'
116  ]
117  ];
118  }
119 
123  public function negativeDataProvider()
124  {
125  $emptyBoolQueryMock = $this->getBoolQueryMock();
126 
127  $emptyBoolQueryMock->expects($this->any())
128  ->method('getShould')
129  ->willReturn([]);
130 
131  $emptyBoolQueryMock->expects($this->any())
132  ->method('getMust')
133  ->willReturn([]);
134 
135  $emptyBoolQueryMock->expects($this->any())
136  ->method('getMustNot')
137  ->willReturn([]);
138 
139  $filterMock = $this->getFilterQueryMock();
140 
141  $filterMock->expects($this->any())
142  ->method('getReferenceType')
143  ->willReturn(\Magento\Framework\Search\Request\Query\Filter::REFERENCE_FILTER);
144 
145  return [
146  [
147  $emptyBoolQueryMock,
148  'Testing bool query'
149  ], [
150  $filterMock,
151  'Testing filter query'
152  ]
153  ];
154  }
155 
159  private function getMatchQueryMock()
160  {
161  $matchQueryMock = $this->getMockBuilder(\Magento\Framework\Search\Request\QueryInterface::class)
162  ->disableOriginalConstructor()
163  ->setMethods(['getType'])
164  ->getMockForAbstractClass();
165 
166  $matchQueryMock->expects($this->any())
167  ->method('getType')
168  ->willReturn(\Magento\Framework\Search\Request\QueryInterface::TYPE_MATCH);
169 
170  return $matchQueryMock;
171  }
172 
176  private function getBoolQueryMock()
177  {
178  $boolQueryMock = $this->getMockBuilder(\Magento\Framework\Search\Request\Query\BoolExpression::class)
179  ->disableOriginalConstructor()
180  ->setMethods(['getType', 'getShould', 'getMust', 'getMustNot'])
181  ->getMock();
182 
183  $boolQueryMock->expects($this->any())
184  ->method('getType')
185  ->willReturn(\Magento\Framework\Search\Request\QueryInterface::TYPE_BOOL);
186 
187  return $boolQueryMock;
188  }
189 
193  private function getFilterQueryMock()
194  {
195  $filterQueryMock = $this->getMockBuilder(\Magento\Framework\Search\Request\Query\Filter::class)
196  ->disableOriginalConstructor()
197  ->setMethods(['getType', 'getReferenceType', 'getReference'])
198  ->getMock();
199 
200  $filterQueryMock->expects($this->any())
201  ->method('getType')
202  ->willReturn(\Magento\Framework\Search\Request\QueryInterface::TYPE_FILTER);
203 
204  return $filterQueryMock;
205  }
206 }