Skip to content

Commit c067006

Browse files
committed
PB-107: Display total number of products matched into ProductsList
- Fix existing integration tests
1 parent b946550 commit c067006

File tree

2 files changed

+108
-84
lines changed

2 files changed

+108
-84
lines changed

dev/tests/integration/testsuite/Magento/PageBuilder/Controller/Adminhtml/Form/Element/ProductTotalsTest.php

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,31 @@ protected function setUp()
3232
* @param string condition
3333
* @param int $expectedTotal
3434
* @param int $expectedDisabled
35+
* @param int $expectedNotVisible
36+
* @param int $expectedOutOfStock
3537
* @dataProvider productDataProvider
3638
*/
37-
public function testProductTotals($condition, $expectedTotal, $expectedDisabled)
38-
{
39+
public function testProductTotals(
40+
$condition,
41+
$expectedTotal,
42+
$expectedDisabled,
43+
$expectedNotVisible,
44+
$expectedOutOfStock
45+
) {
3946
$this->getRequest()->setMethod(\Magento\Framework\App\Request\Http::METHOD_POST);
4047
$this->getRequest()->setPostValue(['conditionValue' => json_encode($condition)]);
4148

4249
$this->dispatch('backend/pagebuilder/form/element_producttotals');
4350
$decoded = $this->serializer->unserialize($this->getResponse()->getBody());
4451

45-
$this->assertEquals($expectedTotal, $decoded['total']);
46-
$this->assertEquals($expectedDisabled, $decoded['disabled']);
52+
$this->assertEquals($expectedTotal, $decoded['total'], 'Failed asserting total count matches.');
53+
$this->assertEquals($expectedDisabled, $decoded['disabled'], 'Failed asserting disabled count matches.');
54+
$this->assertEquals($expectedNotVisible, $decoded['notVisible'], 'Failed asserting not visible count matches.');
55+
$this->assertEquals(
56+
$expectedOutOfStock,
57+
$decoded['outOfStock'],
58+
'Failed asserting out of stock count matches.'
59+
);
4760
}
4861

4962
/**
@@ -65,7 +78,7 @@ public function productDataProvider()
6578
'attribute' => 'category_ids',
6679
'value' => '4'
6780
]
68-
], 0, 0
81+
], 0, 0, 0, 0
6982
],
7083
[ // category with 4 products, 1 disabled, 1 not visible
7184
['1' => [
@@ -80,7 +93,7 @@ public function productDataProvider()
8093
'attribute' => 'category_ids',
8194
'value' => '3'
8295
]
83-
], 2, 1
96+
], 4, 1, 1, 0
8497
],
8598
[ // sku with no matches
8699
['1' => [
@@ -95,7 +108,7 @@ public function productDataProvider()
95108
'attribute' => 'sku',
96109
'value' => 'shoes'
97110
]
98-
], 0, 0
111+
], 0, 0, 0, 0
99112
],
100113
[ // sku with 2 matches, 1 disabled, 1 not visible
101114
['1' => [
@@ -108,9 +121,9 @@ public function productDataProvider()
108121
'operator' => '()',
109122
'type' => \Magento\CatalogWidget\Model\Rule\Condition\Product::class,
110123
'attribute' => 'sku',
111-
'value' => 'simple-3, simple-4'
124+
'value' => 'not-visible-on-storefront, disabled-product'
112125
]
113-
], 0, 1
126+
], 2, 1, 1, 0
114127
],
115128
[ // condition with no matches
116129
['1' => [
@@ -125,9 +138,9 @@ public function productDataProvider()
125138
'attribute' => 'price',
126139
'value' => '10000'
127140
]
128-
], 0, 0
141+
], 0, 0, 0, 0
129142
],
130-
[ // condition with 3 matches, 1 disabled
143+
[ // condition with 3 matches, 1 disabled, 1 not visible
131144
['1' => [
132145
'aggregator' => 'all',
133146
'new_child' => '',
@@ -140,7 +153,7 @@ public function productDataProvider()
140153
'attribute' => 'price',
141154
'value' => '20'
142155
]
143-
], 1, 1
156+
], 3, 1, 1, 0
144157
],
145158
];
146159
}

dev/tests/integration/testsuite/Magento/PageBuilder/_files/product_totals/products.php

Lines changed: 83 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -67,85 +67,96 @@
6767
->setDescription('Category 1.1 description.')
6868
->save();
6969

70+
if (!function_exists('createTestProduct')) {
71+
/**
72+
* Create a test product
73+
*
74+
* @param $name
75+
* @param $sku
76+
* @param $modifier
77+
* @param $objectManager
78+
* @param $defaultAttributeSet
79+
* @param $categoryLinkManagement
80+
* @throws Exception
81+
*/
82+
function createTestProduct($name, $sku, $modifier, $objectManager, $defaultAttributeSet, $categoryLinkManagement)
83+
{
84+
/** @var $product \Magento\Catalog\Model\Product */
85+
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
86+
$product->isObjectNew(true);
87+
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
88+
->setAttributeSetId($defaultAttributeSet)
89+
->setStoreId(1)
90+
->setWebsiteIds([1])
91+
->setName($name)
92+
->setSku($sku)
93+
->setPrice(10)
94+
->setWeight(18)
95+
->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1])
96+
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
97+
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
7098

71-
/** @var $product \Magento\Catalog\Model\Product */
72-
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
73-
$product->isObjectNew(true);
74-
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
75-
->setAttributeSetId($defaultAttributeSet)
76-
->setStoreId(1)
77-
->setWebsiteIds([1])
78-
->setName('Simple Product')
79-
->setSku('simple')
80-
->setPrice(10)
81-
->setWeight(18)
82-
->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1])
83-
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
84-
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
85-
->save();
99+
if ($modifier) {
100+
$product = $modifier($product);
101+
}
86102

87-
$categoryLinkManagement->assignProductToCategories(
88-
$product->getSku(),
89-
[2, 3]
90-
);
103+
$product->save();
91104

92-
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
93-
$product->isObjectNew(true);
94-
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
95-
->setAttributeSetId($defaultAttributeSet)
96-
->setStoreId(1)
97-
->setWebsiteIds([1])
98-
->setName('Simple Product Two')
99-
->setSku('12345') // SKU intentionally contains digits only
100-
->setPrice(45.67)
101-
->setWeight(56)
102-
->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1])
103-
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
104-
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
105-
->save();
105+
$categoryLinkManagement->assignProductToCategories(
106+
$product->getSku(),
107+
[2, 3]
108+
);
109+
}
110+
}
106111

107-
$categoryLinkManagement->assignProductToCategories(
108-
$product->getSku(),
109-
[2, 3]
112+
// Create simple in stock, visible and enabled product
113+
createTestProduct(
114+
'Simple Product',
115+
'simple',
116+
false,
117+
$objectManager,
118+
$defaultAttributeSet,
119+
$categoryLinkManagement
110120
);
111121

112-
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
113-
$product->isObjectNew(true);
114-
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
115-
->setAttributeSetId($defaultAttributeSet)
116-
->setStoreId(1)
117-
->setWebsiteIds([1])
118-
->setName('Simple Product Not Visible On Storefront')
119-
->setSku('simple-3')
120-
->setPrice(15)
121-
->setWeight(2)
122-
->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1])
123-
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_NOT_VISIBLE)
124-
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
125-
->save();
126-
127-
$categoryLinkManagement->assignProductToCategories(
128-
$product->getSku(),
129-
[2, 3]
122+
// Create same product as above with SKU as numbers
123+
createTestProduct(
124+
'Simple Product Two',
125+
'12345',
126+
function (\Magento\Catalog\Model\Product $product) {
127+
$product->setPrice(45.67);
128+
$product->setWeight(56);
129+
return $product;
130+
},
131+
$objectManager,
132+
$defaultAttributeSet,
133+
$categoryLinkManagement
130134
);
131135

132-
/** @var $product \Magento\Catalog\Model\Product */
133-
$product = $objectManager->create(\Magento\Catalog\Model\Product::class);
134-
$product->isObjectNew(true);
135-
$product->setTypeId(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE)
136-
->setAttributeSetId($defaultAttributeSet)
137-
->setStoreId(1)
138-
->setWebsiteIds([1])
139-
->setName('Simple Product Three')
140-
->setSku('simple-4')
141-
->setPrice(10)
142-
->setWeight(18)
143-
->setQuantityAndStockStatus(['qty' => 10, 'is_in_stock' => 1])
144-
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
145-
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED)
146-
->save();
136+
// Create a product not visible on store front
137+
createTestProduct(
138+
'Not Visible on Storefront',
139+
'not-visible-on-storefront',
140+
function (\Magento\Catalog\Model\Product $product) {
141+
$product->setPrice(15);
142+
$product->setWeight(2);
143+
$product->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_NOT_VISIBLE);
144+
return $product;
145+
},
146+
$objectManager,
147+
$defaultAttributeSet,
148+
$categoryLinkManagement
149+
);
147150

148-
$categoryLinkManagement->assignProductToCategories(
149-
$product->getSku(),
150-
[2, 3]
151+
// Create disabled product
152+
createTestProduct(
153+
'Disabled Product',
154+
'disabled-product',
155+
function (\Magento\Catalog\Model\Product $product) {
156+
$product->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
157+
return $product;
158+
},
159+
$objectManager,
160+
$defaultAttributeSet,
161+
$categoryLinkManagement
151162
);

0 commit comments

Comments
 (0)