@@ -123,6 +123,20 @@ private function assertProductIds($queryResponse, $expectedIds)
123
123
$ this ->assertEquals ($ expectedIds , $ actualIds );
124
124
}
125
125
126
+ /**
127
+ * @param \Magento\Framework\Search\Response\QueryResponse $queryResponse
128
+ * @param array $expectedIds
129
+ */
130
+ private function assertOrderedProductIds ($ queryResponse , $ expectedIds )
131
+ {
132
+ $ actualIds = [];
133
+ foreach ($ queryResponse as $ document ) {
134
+ /** @var \Magento\Framework\Api\Search\Document $document */
135
+ $ actualIds [] = $ document ->getId ();
136
+ }
137
+ $ this ->assertEquals ($ expectedIds , $ actualIds );
138
+ }
139
+
126
140
/**
127
141
* @magentoConfigFixture current_store catalog/search/engine mysql
128
142
*/
@@ -136,6 +150,24 @@ public function testMatchQuery()
136
150
$ this ->assertEquals (1 , $ queryResponse ->count ());
137
151
}
138
152
153
+ /**
154
+ * @magentoDataFixture Magento/Framework/Search/_files/products_multi_option.php
155
+ * @magentoConfigFixture current_store catalog/search/engine mysql
156
+ */
157
+ public function testMatchOrderedQuery ()
158
+ {
159
+ $ expectedIds = [8 , 7 , 6 , 5 , 2 ];
160
+
161
+ //Verify that MySql randomized result of equal-weighted results
162
+ //consistently ordered by entity_id after multiple calls
163
+ $ this ->requestBuilder ->bind ('fulltext_search_query ' , 'shorts ' );
164
+ $ this ->requestBuilder ->setRequestName ('one_match ' );
165
+ $ queryResponse = $ this ->executeQuery ();
166
+
167
+ $ this ->assertEquals (5 , $ queryResponse ->count ());
168
+ $ this ->assertOrderedProductIds ($ queryResponse , $ expectedIds );
169
+ }
170
+
139
171
/**
140
172
* @magentoConfigFixture current_store catalog/search/engine mysql
141
173
*/
0 commit comments