Skip to content

Commit 795aa94

Browse files
committed
Merge remote-tracking branch 'origin/MC-19527' into 2.3-develop-pr32
2 parents 5bde289 + b2a27b8 commit 795aa94

File tree

7 files changed

+145
-47
lines changed

7 files changed

+145
-47
lines changed

app/code/Magento/CatalogSearch/Model/ResourceModel/Advanced/Collection.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ private function getSearchResultApplier(SearchResultInterface $searchResult): Se
391391
'collection' => $this,
392392
'searchResult' => $searchResult,
393393
/** This variable sets by serOrder method, but doesn't have a getter method. */
394-
'orders' => $this->_orders
394+
'orders' => $this->_orders,
395+
'size' => $this->getPageSize(),
395396
]
396397
);
397398
}

app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -485,12 +485,12 @@ private function getSearchCriteriaResolver(): SearchCriteriaResolverInterface
485485
{
486486
return $this->searchCriteriaResolverFactory->create(
487487
[
488-
'builder' => $this->getSearchCriteriaBuilder(),
489-
'collection' => $this,
490-
'searchRequestName' => $this->searchRequestName,
491-
'currentPage' => $this->_curPage,
492-
'size' => $this->getPageSize(),
493-
'orders' => $this->searchOrders,
488+
'builder' => $this->getSearchCriteriaBuilder(),
489+
'collection' => $this,
490+
'searchRequestName' => $this->searchRequestName,
491+
'currentPage' => (int)$this->_curPage,
492+
'size' => $this->getPageSize(),
493+
'orders' => $this->searchOrders,
494494
]
495495
);
496496
}
@@ -505,10 +505,12 @@ private function getSearchResultApplier(SearchResultInterface $searchResult): Se
505505
{
506506
return $this->searchResultApplierFactory->create(
507507
[
508-
'collection' => $this,
509-
'searchResult' => $searchResult,
510-
/** This variable sets by serOrder method, but doesn't have a getter method. */
511-
'orders' => $this->_orders,
508+
'collection' => $this,
509+
'searchResult' => $searchResult,
510+
/** This variable sets by serOrder method, but doesn't have a getter method. */
511+
'orders' => $this->_orders,
512+
'size' => $this->getPageSize(),
513+
'currentPage' => (int)$this->_curPage,
512514
]
513515
);
514516
}

app/code/Magento/CatalogSearch/Test/Unit/Model/ResourceModel/Advanced/CollectionTest.php

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\CatalogSearch\Test\Unit\Model\ResourceModel\BaseCollection;
1515
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierFactory;
1616
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverFactory;
17+
use PHPUnit\Framework\MockObject\MockObject;
1718

1819
/**
1920
* Tests Magento\CatalogSearch\Model\ResourceModel\Advanced\Collection
@@ -35,32 +36,37 @@ class CollectionTest extends BaseCollection
3536
private $advancedCollection;
3637

3738
/**
38-
* @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
39+
* @var \Magento\Framework\Api\FilterBuilder|MockObject
3940
*/
4041
private $filterBuilder;
4142

4243
/**
43-
* @var \Magento\Framework\Api\Search\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
44+
* @var \Magento\Framework\Api\Search\SearchCriteriaBuilder|MockObject
4445
*/
4546
private $criteriaBuilder;
4647

4748
/**
48-
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory|\PHPUnit_Framework_MockObject_MockObject
49+
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory|MockObject
4950
*/
5051
private $temporaryStorageFactory;
5152

5253
/**
53-
* @var \Magento\Search\Api\SearchInterface|\PHPUnit_Framework_MockObject_MockObject
54+
* @var \Magento\Search\Api\SearchInterface|MockObject
5455
*/
5556
private $search;
5657

5758
/**
58-
* @var \Magento\Eav\Model\Config|\PHPUnit_Framework_MockObject_MockObject
59+
* @var \Magento\Eav\Model\Config|MockObject
5960
*/
6061
private $eavConfig;
6162

6263
/**
63-
* setUp method for CollectionTest
64+
* @var SearchResultApplierFactory|MockObject
65+
*/
66+
private $searchResultApplierFactory;
67+
68+
/**
69+
* @inheritdoc
6470
*/
6571
protected function setUp()
6672
{
@@ -97,17 +103,10 @@ protected function setUp()
97103
->method('create')
98104
->willReturn($searchCriteriaResolver);
99105

100-
$searchResultApplier = $this->getMockBuilder(SearchResultApplierInterface::class)
101-
->disableOriginalConstructor()
102-
->setMethods(['apply'])
103-
->getMockForAbstractClass();
104-
$searchResultApplierFactory = $this->getMockBuilder(SearchResultApplierFactory::class)
106+
$this->searchResultApplierFactory = $this->getMockBuilder(SearchResultApplierFactory::class)
105107
->disableOriginalConstructor()
106108
->setMethods(['create'])
107109
->getMock();
108-
$searchResultApplierFactory->expects($this->any())
109-
->method('create')
110-
->willReturn($searchResultApplier);
111110

112111
$totalRecordsResolver = $this->getMockBuilder(TotalRecordsResolverInterface::class)
113112
->disableOriginalConstructor()
@@ -134,12 +133,15 @@ protected function setUp()
134133
'productLimitationFactory' => $productLimitationFactoryMock,
135134
'collectionProvider' => null,
136135
'searchCriteriaResolverFactory' => $searchCriteriaResolverFactory,
137-
'searchResultApplierFactory' => $searchResultApplierFactory,
136+
'searchResultApplierFactory' => $this->searchResultApplierFactory,
138137
'totalRecordsResolverFactory' => $totalRecordsResolverFactory
139138
]
140139
);
141140
}
142141

142+
/**
143+
* Test to Load data with filter in place
144+
*/
143145
public function testLoadWithFilterNoFilters()
144146
{
145147
$this->advancedCollection->loadWithFilter();
@@ -150,6 +152,7 @@ public function testLoadWithFilterNoFilters()
150152
*/
151153
public function testLike()
152154
{
155+
$pageSize = 10;
153156
$attributeCode = 'description';
154157
$attributeCodeId = 42;
155158
$attribute = $this->createMock(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class);
@@ -168,6 +171,22 @@ public function testLike()
168171
$searchResult = $this->createMock(\Magento\Framework\Api\Search\SearchResultInterface::class);
169172
$this->search->expects($this->once())->method('search')->willReturn($searchResult);
170173

174+
$this->advancedCollection->setPageSize($pageSize);
175+
$this->advancedCollection->setCurPage(0);
176+
177+
$searchResultApplier = $this->createMock(SearchResultApplierInterface::class);
178+
$this->searchResultApplierFactory->expects($this->once())
179+
->method('create')
180+
->with(
181+
[
182+
'collection' => $this->advancedCollection,
183+
'searchResult' => $searchResult,
184+
'orders' => [],
185+
'size' => $pageSize,
186+
]
187+
)
188+
->willReturn($searchResultApplier);
189+
171190
// addFieldsToFilter will load filters,
172191
// then loadWithFilter will trigger _renderFiltersBefore code in Advanced/Collection
173192
$this->assertSame(
@@ -177,14 +196,15 @@ public function testLike()
177196
}
178197

179198
/**
180-
* @return \PHPUnit_Framework_MockObject_MockObject
199+
* @return MockObject
181200
*/
182201
protected function getCriteriaBuilder()
183202
{
184203
$criteriaBuilder = $this->getMockBuilder(\Magento\Framework\Api\Search\SearchCriteriaBuilder::class)
185204
->setMethods(['addFilter', 'create', 'setRequestName'])
186205
->disableOriginalConstructor()
187206
->getMock();
207+
188208
return $criteriaBuilder;
189209
}
190210
}

app/code/Magento/CatalogSearch/Test/Unit/Model/ResourceModel/Fulltext/CollectionTest.php

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,20 @@
55
*/
66
namespace Magento\CatalogSearch\Test\Unit\Model\ResourceModel\Fulltext;
77

8+
use Magento\Catalog\Model\ResourceModel\Product\Collection\ProductLimitationFactory;
89
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverFactory;
910
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverInterface;
1011
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierFactory;
1112
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverFactory;
1213
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface;
1314
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverInterface;
1415
use Magento\CatalogSearch\Test\Unit\Model\ResourceModel\BaseCollection;
16+
use PHPUnit\Framework\MockObject\MockObject;
1517
use Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory;
16-
use PHPUnit_Framework_MockObject_MockObject as MockObject;
17-
use Magento\Catalog\Model\ResourceModel\Product\Collection\ProductLimitationFactory;
1818

1919
/**
20+
* Test class for Fulltext Collection
21+
*
2022
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2123
*/
2224
class CollectionTest extends BaseCollection
@@ -27,12 +29,12 @@ class CollectionTest extends BaseCollection
2729
private $objectManager;
2830

2931
/**
30-
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorage|\PHPUnit_Framework_MockObject_MockObject
32+
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorage|MockObject
3133
*/
3234
private $temporaryStorage;
3335

3436
/**
35-
* @var \Magento\Search\Api\SearchInterface|\PHPUnit_Framework_MockObject_MockObject
37+
* @var \Magento\Search\Api\SearchInterface|MockObject
3638
*/
3739
private $search;
3840

@@ -61,6 +63,11 @@ class CollectionTest extends BaseCollection
6163
*/
6264
private $filterBuilder;
6365

66+
/**
67+
* @var SearchResultApplierFactory|MockObject
68+
*/
69+
private $searchResultApplierFactory;
70+
6471
/**
6572
* @var \Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection
6673
*/
@@ -72,7 +79,7 @@ class CollectionTest extends BaseCollection
7279
private $filter;
7380

7481
/**
75-
* setUp method for CollectionTest
82+
* @inheritdoc
7683
*/
7784
protected function setUp()
7885
{
@@ -115,17 +122,10 @@ protected function setUp()
115122
->method('create')
116123
->willReturn($searchCriteriaResolver);
117124

118-
$searchResultApplier = $this->getMockBuilder(SearchResultApplierInterface::class)
119-
->disableOriginalConstructor()
120-
->setMethods(['apply'])
121-
->getMockForAbstractClass();
122-
$searchResultApplierFactory = $this->getMockBuilder(SearchResultApplierFactory::class)
125+
$this->searchResultApplierFactory = $this->getMockBuilder(SearchResultApplierFactory::class)
123126
->disableOriginalConstructor()
124127
->setMethods(['create'])
125128
->getMock();
126-
$searchResultApplierFactory->expects($this->any())
127-
->method('create')
128-
->willReturn($searchResultApplier);
129129

130130
$totalRecordsResolver = $this->getMockBuilder(TotalRecordsResolverInterface::class)
131131
->disableOriginalConstructor()
@@ -148,7 +148,7 @@ protected function setUp()
148148
'temporaryStorageFactory' => $temporaryStorageFactory,
149149
'productLimitationFactory' => $productLimitationFactoryMock,
150150
'searchCriteriaResolverFactory' => $searchCriteriaResolverFactory,
151-
'searchResultApplierFactory' => $searchResultApplierFactory,
151+
'searchResultApplierFactory' => $this->searchResultApplierFactory,
152152
'totalRecordsResolverFactory' => $totalRecordsResolverFactory,
153153
]
154154
);
@@ -161,23 +161,59 @@ protected function setUp()
161161
$this->model->setFilterBuilder($this->filterBuilder);
162162
}
163163

164+
/**
165+
* @inheritdoc
166+
*/
164167
protected function tearDown()
165168
{
166169
$reflectionProperty = new \ReflectionProperty(\Magento\Framework\App\ObjectManager::class, '_instance');
167170
$reflectionProperty->setAccessible(true);
168171
$reflectionProperty->setValue(null);
169172
}
170173

174+
/**
175+
* Test to Return field faceted data from faceted search result
176+
*/
171177
public function testGetFacetedDataWithEmptyAggregations()
172178
{
179+
$pageSize = 10;
180+
173181
$searchResult = $this->getMockBuilder(\Magento\Framework\Api\Search\SearchResultInterface::class)
174182
->getMockForAbstractClass();
175183
$this->search->expects($this->once())
176184
->method('search')
177185
->willReturn($searchResult);
186+
187+
$searchResultApplier = $this->getMockBuilder(SearchResultApplierInterface::class)
188+
->disableOriginalConstructor()
189+
->setMethods(['apply'])
190+
->getMockForAbstractClass();
191+
$this->searchResultApplierFactory->expects($this->any())
192+
->method('create')
193+
->willReturn($searchResultApplier);
194+
195+
$this->model->setPageSize($pageSize);
196+
$this->model->setCurPage(0);
197+
198+
$this->searchResultApplierFactory->expects($this->once())
199+
->method('create')
200+
->with(
201+
[
202+
'collection' => $this->model,
203+
'searchResult' => $searchResult,
204+
'orders' => [],
205+
'size' => $pageSize,
206+
'currentPage' => 0,
207+
]
208+
)
209+
->willReturn($searchResultApplier);
210+
178211
$this->model->getFacetedData('field');
179212
}
180213

214+
/**
215+
* Test to Apply attribute filter to facet collection
216+
*/
181217
public function testAddFieldToFilter()
182218
{
183219
$this->filter = $this->createFilter();
@@ -220,6 +256,7 @@ protected function getCriteriaBuilder()
220256
protected function getFilterBuilder()
221257
{
222258
$filterBuilder = $this->createMock(\Magento\Framework\Api\FilterBuilder::class);
259+
223260
return $filterBuilder;
224261
}
225262

@@ -241,6 +278,7 @@ protected function addFiltersToFilterBuilder(MockObject $filterBuilder, array $f
241278
->with($value)
242279
->willReturnSelf();
243280
}
281+
244282
return $filterBuilder;
245283
}
246284

@@ -252,6 +290,7 @@ protected function createFilter()
252290
$filter = $this->getMockBuilder(\Magento\Framework\Api\Filter::class)
253291
->disableOriginalConstructor()
254292
->getMock();
293+
255294
return $filter;
256295
}
257296
}

app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/SearchCriteriaResolver.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ public function __construct(
7676
*/
7777
public function resolve(): SearchCriteria
7878
{
79-
if ($this->size !== 0) {
80-
$this->builder->setPageSize($this->size);
81-
}
8279
$searchCriteria = $this->builder->create();
8380
$searchCriteria->setRequestName($this->searchRequestName);
8481
$searchCriteria->setSortOrders($this->orders);

0 commit comments

Comments
 (0)