Skip to content

Commit 4655cf2

Browse files
committed
Merge branch 'ACP2E-216' of https://github.com/magento-l3/magento2ce into L3-PR-20211001
2 parents 66bd8cf + bd864ba commit 4655cf2

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
lines changed

app/code/Magento/ConfigurableProduct/Test/Unit/Ui/Component/Listing/AssociatedProduct/Columns/AttributesTest.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,13 @@ public function testPrepareDataSource()
109109
$name = 'some_name';
110110
$initialData = [
111111
'data' => [
112+
'totalRecords' => 4,
112113
'items' => [
113-
['attribute1_1_code' => 'attribute1_1_option2'],
114-
['attribute2_1_code' => 'attribute2_1_option3'],
115-
['attribute3_1_code' => 'attribute3_1_option3', 'attribute3_2_code' => 'attribute3_2_option1']
114+
['attribute1_1_code' => 'attribute1_1_option2', 'required_options' => '0'],
115+
['attribute2_1_code' => 'attribute2_1_option3', 'required_options' => '0'],
116+
['attribute3_1_code' => 'attribute3_1_option3', 'attribute3_2_code' => 'attribute3_2_option1',
117+
'required_options' => '0'],
118+
['attribute4_1_code' => 'attribute4_1_option1', 'required_options' => '1']
116119
]
117120
]
118121
];
@@ -158,18 +161,22 @@ public function testPrepareDataSource()
158161
];
159162
$resultData = [
160163
'data' => [
164+
'totalRecords' => 3,
161165
'items' => [
162166
[
163167
'attribute1_1_code' => 'attribute1_1_option2',
168+
'required_options' => '0',
164169
$name => 'attribute1_1_label: attribute1_1_option2_label'
165170
],
166171
[
167172
'attribute2_1_code' => 'attribute2_1_option3',
173+
'required_options' => '0',
168174
$name => ''
169175
],
170176
[
171177
'attribute3_1_code' => 'attribute3_1_option3',
172178
'attribute3_2_code' => 'attribute3_2_option1',
179+
'required_options' => '0',
173180
$name => 'attribute3_1_label: attribute3_1_option3_label,'
174181
. ' attribute3_2_label: attribute3_2_option1_label'
175182
]
@@ -187,7 +194,9 @@ public function testPrepareDataSource()
187194
->method('getItems')
188195
->willReturn($attributes);
189196

190-
$this->assertSame($resultData, $this->attributesColumn->prepareDataSource($initialData));
197+
$actualResultItems = $this->attributesColumn->prepareDataSource($initialData);
198+
$this->assertSame($resultData['data']['items'], $actualResultItems['data']['items']);
199+
$this->assertSame($resultData['data']['totalRecords'], count($actualResultItems['data']['items']));
191200
}
192201

193202
/**

app/code/Magento/ConfigurableProduct/Ui/Component/Listing/AssociatedProduct/Columns/Attributes.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,15 @@ public function prepareDataSource(array $dataSource)
5959
if (isset($dataSource['data']['items'])) {
6060
$attributes = $this->getAttributes();
6161
$fieldName = $this->getData('name');
62-
foreach ($dataSource['data']['items'] as & $item) {
62+
foreach ($dataSource['data']['items'] as $key => & $item) {
6363
$attrStrings = [];
6464
foreach ($attributes as $attributeCode => $attribute) {
65+
if ($item['required_options'] === "1") {
66+
unset($dataSource['data']['items'][$key]);
67+
$dataSource['data']['totalRecords']--;
68+
continue;
69+
}
70+
6571
if (isset($item[$attributeCode]) && isset($attribute['options'][$item[$attributeCode]])) {
6672
$attrStrings[] = $attribute['label'] . ': ' . $attribute['options'][$item[$attributeCode]];
6773
}
@@ -71,6 +77,7 @@ public function prepareDataSource(array $dataSource)
7177
}
7278
}
7379

80+
$dataSource['data']['items'] = array_values($dataSource['data']['items']);
7481
return $dataSource;
7582
}
7683

app/code/Magento/GroupedProduct/Test/Unit/Ui/DataProvider/Product/GroupedProductDataProviderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ public function testGetData()
112112
$this->collectionMock->expects($this->once())
113113
->method('isLoaded')
114114
->willReturn(false);
115-
$this->collectionMock->expects($this->once())
115+
$this->collectionMock->expects($this->any())
116116
->method('addAttributeToFilter')
117-
->with('type_id', [self::ALLOWED_TYPE]);
117+
->withConsecutive(['type_id', [self::ALLOWED_TYPE]], ['required_options', '0']);
118118
$this->collectionMock->expects($this->once())
119119
->method('toArray')
120120
->willReturn($items);

app/code/Magento/GroupedProduct/Ui/DataProvider/Product/GroupedProductDataProvider.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77

88
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
99
use Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider;
10-
use Magento\GroupedProduct\Model\Product\Type\Grouped as GroupedProductType;
10+
use Magento\Framework\Exception\NoSuchEntityException;
1111
use Magento\Catalog\Model\ProductTypes\ConfigInterface;
1212
use Magento\Framework\App\RequestInterface;
1313
use Magento\Store\Api\Data\StoreInterface;
1414
use Magento\Store\Api\StoreRepositoryInterface;
15+
use Magento\Ui\DataProvider\AddFieldToCollectionInterface;
16+
use Magento\Ui\DataProvider\AddFilterToCollectionInterface;
1517

1618
class GroupedProductDataProvider extends ProductDataProvider
1719
{
@@ -38,12 +40,12 @@ class GroupedProductDataProvider extends ProductDataProvider
3840
* @param string $requestFieldName
3941
* @param CollectionFactory $collectionFactory
4042
* @param RequestInterface $request
41-
* @param StoreRepositoryInterface $storeRepository
4243
* @param ConfigInterface $config
43-
* @param \Magento\Ui\DataProvider\AddFieldToCollectionInterface[] $addFieldStrategies
44-
* @param \Magento\Ui\DataProvider\AddFilterToCollectionInterface[] $addFilterStrategies
44+
* @param StoreRepositoryInterface $storeRepository
4545
* @param array $meta
4646
* @param array $data
47+
* @param AddFieldToCollectionInterface[] $addFieldStrategies
48+
* @param AddFilterToCollectionInterface[] $addFilterStrategies
4749
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
4850
*/
4951
public function __construct(
@@ -79,6 +81,7 @@ public function __construct(
7981
* Get data
8082
*
8183
* @return array
84+
* @throws NoSuchEntityException
8285
*/
8386
public function getData()
8487
{
@@ -87,6 +90,10 @@ public function getData()
8790
'type_id',
8891
$this->config->getComposableTypes()
8992
);
93+
$this->getCollection()->addAttributeToFilter(
94+
'required_options',
95+
'0'
96+
);
9097
if ($storeId = $this->request->getParam('current_store_id')) {
9198
/** @var StoreInterface $store */
9299
$store = $this->storeRepository->getById($storeId);

0 commit comments

Comments
 (0)