Skip to content

Commit 71bffdb

Browse files
committed
Merge remote-tracking branch 'origin/2.3-develop' into 2.3-PR
2 parents aa1bbf2 + d76b6c1 commit 71bffdb

File tree

17 files changed

+537
-9
lines changed

17 files changed

+537
-9
lines changed

app/code/Magento/Backend/etc/adminhtml/di.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,9 @@
159159
</argument>
160160
</arguments>
161161
</type>
162+
<type name="Magento\Framework\View\Layout\Generator\Block">
163+
<arguments>
164+
<argument name="defaultClass" xsi:type="string">Magento\Backend\Block\Template</argument>
165+
</arguments>
166+
</type>
162167
</config>

dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductAttribute.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,5 +335,32 @@
335335
<field name="is_required" xsi:type="string">No</field>
336336
<field name="is_used_for_promo_rules" xsi:type="string">Yes</field>
337337
</dataset>
338+
339+
<dataset name="sizes_S_M_L_Filterable">
340+
<field name="frontend_label" xsi:type="string">size_%isolation%</field>
341+
<field name="attribute_code" xsi:type="string">size_%isolation%</field>
342+
<field name="frontend_input" xsi:type="string">Dropdown</field>
343+
<field name="is_required" xsi:type="string">No</field>
344+
<field name="is_searchable" xsi:type="string">Yes</field>
345+
<field name="is_filterable" xsi:type="string">Filterable (with results)</field>
346+
<field name="is_filterable_in_search" xsi:type="string">Yes</field>
347+
<field name="options" xsi:type="array">
348+
<item name="0" xsi:type="array">
349+
<item name="is_default" xsi:type="string">No</item>
350+
<item name="admin" xsi:type="string">SIZE_S</item>
351+
<item name="view" xsi:type="string">SIZE_S</item>
352+
</item>
353+
<item name="1" xsi:type="array">
354+
<item name="is_default" xsi:type="string">No</item>
355+
<item name="admin" xsi:type="string">SIZE_M</item>
356+
<item name="view" xsi:type="string">SIZE_M</item>
357+
</item>
358+
<item name="2" xsi:type="array">
359+
<item name="is_default" xsi:type="string">No</item>
360+
<item name="admin" xsi:type="string">SIZE_L</item>
361+
<item name="view" xsi:type="string">SIZE_L</item>
362+
</item>
363+
</field>
364+
</dataset>
338365
</repository>
339366
</config>

dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductSimple.xml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2156,5 +2156,59 @@
21562156
</field>
21572157
<field name="url_key" xsi:type="string">simple-product-%isolation%</field>
21582158
</dataset>
2159+
2160+
<dataset name="product_to_match">
2161+
<field name="attribute_set_id" xsi:type="array">
2162+
<item name="dataset" xsi:type="string">default</item>
2163+
</field>
2164+
<field name="name" xsi:type="string">Matching Product</field>
2165+
<field name="sku" xsi:type="string">sku_matching_product</field>
2166+
<field name="product_has_weight" xsi:type="string">This item has weight</field>
2167+
<field name="weight" xsi:type="string">1</field>
2168+
<field name="quantity_and_stock_status" xsi:type="array">
2169+
<item name="qty" xsi:type="string">25</item>
2170+
<item name="is_in_stock" xsi:type="string">In Stock</item>
2171+
</field>
2172+
<field name="price" xsi:type="array">
2173+
<item name="value" xsi:type="string">60</item>
2174+
</field>
2175+
<field name="tax_class_id" xsi:type="array">
2176+
<item name="dataset" xsi:type="string">taxable_goods</item>
2177+
</field>
2178+
<field name="website_ids" xsi:type="array">
2179+
<item name="0" xsi:type="array">
2180+
<item name="dataset" xsi:type="string">default</item>
2181+
</item>
2182+
</field>
2183+
<field name="visibility" xsi:type="string">Catalog, Search</field>
2184+
<field name="url_key" xsi:type="string">matching-product</field>
2185+
</dataset>
2186+
2187+
<dataset name="product_to_display">
2188+
<field name="attribute_set_id" xsi:type="array">
2189+
<item name="dataset" xsi:type="string">default</item>
2190+
</field>
2191+
<field name="name" xsi:type="string">Displayed Product</field>
2192+
<field name="sku" xsi:type="string">sku_displayed_product</field>
2193+
<field name="product_has_weight" xsi:type="string">This item has weight</field>
2194+
<field name="weight" xsi:type="string">2</field>
2195+
<field name="quantity_and_stock_status" xsi:type="array">
2196+
<item name="qty" xsi:type="string">35</item>
2197+
<item name="is_in_stock" xsi:type="string">In Stock</item>
2198+
</field>
2199+
<field name="price" xsi:type="array">
2200+
<item name="value" xsi:type="string">70</item>
2201+
</field>
2202+
<field name="tax_class_id" xsi:type="array">
2203+
<item name="dataset" xsi:type="string">taxable_goods</item>
2204+
</field>
2205+
<field name="website_ids" xsi:type="array">
2206+
<item name="0" xsi:type="array">
2207+
<item name="dataset" xsi:type="string">default</item>
2208+
</item>
2209+
</field>
2210+
<field name="visibility" xsi:type="string">Catalog, Search</field>
2211+
<field name="url_key" xsi:type="string">displayed-product</field>
2212+
</dataset>
21592213
</repository>
21602214
</config>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\ConfigurableProduct\Test\Constraint;
9+
10+
use Magento\Catalog\Test\Page\Category\CatalogCategoryView;
11+
use Magento\Cms\Test\Page\CmsIndex;
12+
use Magento\Mtf\Constraint\AbstractConstraint;
13+
use Magento\Mtf\Fixture\FixtureFactory;
14+
use Magento\Mtf\Fixture\InjectableFixture;
15+
16+
/**
17+
* Check whether OOS product attribute options for configurable product are not displayed
18+
* on frontend in Layered navigation.
19+
*/
20+
class AssertConfigurableProductAttributeOptionNotInLayeredNavigation extends AbstractConstraint
21+
{
22+
/**
23+
* Check whether the OOS attribute options are not displayed on the frontend in Layered navigation.
24+
*
25+
* @param CatalogCategoryView $catalogCategoryView
26+
* @param InjectableFixture $product
27+
* @param CmsIndex $cmsIndex
28+
* @param FixtureFactory $fixtureFactory
29+
* @param string $outOfStockOption
30+
* @return void
31+
*/
32+
public function processAssert(
33+
CatalogCategoryView $catalogCategoryView,
34+
InjectableFixture $product,
35+
CmsIndex $cmsIndex,
36+
FixtureFactory $fixtureFactory,
37+
$outOfStockOption
38+
) {
39+
$fixtureFactory->createByCode(
40+
'catalogProductSimple',
41+
[
42+
'dataset' => 'product_with_category_with_anchor',
43+
'data' => [
44+
'category_ids' => [
45+
'dataset' => null,
46+
'category' => $product->getDataFieldConfig('category_ids')['source']->getCategories()[0],
47+
],
48+
],
49+
]
50+
)->persist();
51+
52+
$cmsIndex->open()->getTopmenu()->selectCategoryByName($product->getCategoryIds()[0]);
53+
54+
$attributesData = $product->hasData('configurable_attributes_data')
55+
? $product->getConfigurableAttributesData()['attributes_data']
56+
: [];
57+
58+
$attributeData = !empty($attributesData) ? array_shift($attributesData) : [];
59+
$frontendAttributeLabel = !empty($attributeData) && isset($attributeData['frontend_label'])
60+
? $attributeData['frontend_label']
61+
: '';
62+
63+
$filters = $catalogCategoryView->getLayeredNavigationBlock()->getFilterContents($frontendAttributeLabel);
64+
65+
\PHPUnit\Framework\Assert::assertFalse(
66+
in_array(strtoupper($outOfStockOption), $filters),
67+
'Out of Stock attribute option is present in layered navigation on category page.'
68+
);
69+
}
70+
71+
/**
72+
* @inheritdoc
73+
*/
74+
public function toString()
75+
{
76+
return 'Out of Stock attribute option is absent in layered navigation on category page.';
77+
}
78+
}

dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Repository/ConfigurableProduct.xml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,5 +1115,75 @@
11151115
</item>
11161116
</field>
11171117
</dataset>
1118+
1119+
<dataset name="product_with_3_sizes">
1120+
<field name="name" xsi:type="string">Configurable product with sizes %isolation%</field>
1121+
<field name="sku" xsi:type="string">sku_configurable_product_with_sizes_%isolation%</field>
1122+
<field name="product_has_weight" xsi:type="string">This item has weight</field>
1123+
<field name="weight" xsi:type="string">2</field>
1124+
<field name="status" xsi:type="string">Yes</field>
1125+
<field name="visibility" xsi:type="string">Catalog, Search</field>
1126+
<field name="tax_class_id" xsi:type="array">
1127+
<item name="dataset" xsi:type="string">taxable_goods</item>
1128+
</field>
1129+
<field name="url_key" xsi:type="string">configurable-product-with-size-%isolation%</field>
1130+
<field name="configurable_attributes_data" xsi:type="array">
1131+
<item name="dataset" xsi:type="string">size_3_items</item>
1132+
</field>
1133+
<field name="quantity_and_stock_status" xsi:type="array">
1134+
<item name="is_in_stock" xsi:type="string">In Stock</item>
1135+
</field>
1136+
<field name="website_ids" xsi:type="array">
1137+
<item name="0" xsi:type="array">
1138+
<item name="dataset" xsi:type="string">default</item>
1139+
</item>
1140+
</field>
1141+
<field name="category_ids" xsi:type="array">
1142+
<item name="dataset" xsi:type="string">default_anchor_subcategory</item>
1143+
</field>
1144+
<field name="attribute_set_id" xsi:type="array">
1145+
<item name="dataset" xsi:type="string">default</item>
1146+
</field>
1147+
<field name="price" xsi:type="array">
1148+
<item name="value" xsi:type="string">170</item>
1149+
</field>
1150+
</dataset>
1151+
1152+
<dataset name="with_only_two_options">
1153+
<field name="name" xsi:type="string">Configurable product with two options %isolation%</field>
1154+
<field name="sku" xsi:type="string">sku_test_configurable_product_with_two_options_%isolation%</field>
1155+
<field name="price" xsi:type="array">
1156+
<item name="value" xsi:type="string">40</item>
1157+
<item name="dataset" xsi:type="string">price_40</item>
1158+
</field>
1159+
<field name="product_has_weight" xsi:type="string">This item has weight</field>
1160+
<field name="weight" xsi:type="string">30</field>
1161+
<field name="status" xsi:type="string">Yes</field>
1162+
<field name="visibility" xsi:type="string">Catalog, Search</field>
1163+
<field name="tax_class_id" xsi:type="array">
1164+
<item name="dataset" xsi:type="string">taxable_goods</item>
1165+
</field>
1166+
<field name="url_key" xsi:type="string">configurable-product-with-two-options-%isolation%</field>
1167+
<field name="configurable_attributes_data" xsi:type="array">
1168+
<item name="dataset" xsi:type="string">two_options</item>
1169+
</field>
1170+
<field name="quantity_and_stock_status" xsi:type="array">
1171+
<item name="is_in_stock" xsi:type="string">In Stock</item>
1172+
</field>
1173+
<field name="website_ids" xsi:type="array">
1174+
<item name="0" xsi:type="array">
1175+
<item name="dataset" xsi:type="string">default</item>
1176+
</item>
1177+
</field>
1178+
<field name="attribute_set_id" xsi:type="array">
1179+
<item name="dataset" xsi:type="string">default</item>
1180+
</field>
1181+
<field name="checkout_data" xsi:type="array">
1182+
<item name="dataset" xsi:type="string">configurable_default_with_two_options</item>
1183+
</field>
1184+
<field name="category_ids" xsi:type="array">
1185+
<item name="dataset" xsi:type="string">default_subcategory</item>
1186+
</field>
1187+
</dataset>
11181188
</repository>
11191189
</config>

dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Repository/ConfigurableProduct/CheckoutData.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,5 +466,26 @@
466466
<item name="subtotal" xsi:type="string">15</item>
467467
</field>
468468
</dataset>
469+
470+
<dataset name="configurable_default_with_two_options">
471+
<field name="options" xsi:type="array">
472+
<item name="configurable_options" xsi:type="array">
473+
<item name="0" xsi:type="array">
474+
<item name="title" xsi:type="string">attribute_key_0</item>
475+
<item name="value" xsi:type="string">option_key_0</item>
476+
</item>
477+
<item name="1" xsi:type="array">
478+
<item name="title" xsi:type="string">attribute_key_0</item>
479+
<item name="value" xsi:type="string">option_key_1</item>
480+
</item>
481+
</item>
482+
</field>
483+
<field name="qty" xsi:type="string">3</field>
484+
<field name="cartItem" xsi:type="array">
485+
<item name="price" xsi:type="string">40</item>
486+
<item name="qty" xsi:type="string">3</item>
487+
<item name="subtotal" xsi:type="string">120</item>
488+
</field>
489+
</dataset>
469490
</repository>
470491
</config>

dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Repository/ConfigurableProduct/ConfigurableAttributesData.xml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,5 +1166,43 @@
11661166
</item>
11671167
</field>
11681168
</dataset>
1169+
1170+
<dataset name="size_3_items">
1171+
<field name="attributes_data" xsi:type="array">
1172+
<item name="attribute_key_0" xsi:type="array">
1173+
<item name="options" xsi:type="array">
1174+
<item name="option_key_0" xsi:type="array">
1175+
<item name="pricing_value" xsi:type="string">40.00</item>
1176+
<item name="include" xsi:type="string">Yes</item>
1177+
</item>
1178+
<item name="option_key_1" xsi:type="array">
1179+
<item name="pricing_value" xsi:type="string">42.00</item>
1180+
<item name="include" xsi:type="string">Yes</item>
1181+
</item>
1182+
<item name="option_key_2" xsi:type="array">
1183+
<item name="pricing_value" xsi:type="string">44.00</item>
1184+
<item name="include" xsi:type="string">Yes</item>
1185+
</item>
1186+
</item>
1187+
</item>
1188+
</field>
1189+
<field name="attributes" xsi:type="array">
1190+
<item name="attribute_key_0" xsi:type="string">catalogProductAttribute::sizes_S_M_L_Filterable</item>
1191+
</field>
1192+
<field name="matrix" xsi:type="array">
1193+
<item name="attribute_key_0:option_key_0" xsi:type="array">
1194+
<item name="qty" xsi:type="string">100</item>
1195+
<item name="weight" xsi:type="string">1</item>
1196+
</item>
1197+
<item name="attribute_key_0:option_key_1" xsi:type="array">
1198+
<item name="qty" xsi:type="string">100</item>
1199+
<item name="weight" xsi:type="string">1</item>
1200+
</item>
1201+
<item name="attribute_key_0:option_key_2" xsi:type="array">
1202+
<item name="qty" xsi:type="string">100</item>
1203+
<item name="weight" xsi:type="string">1</item>
1204+
</item>
1205+
</field>
1206+
</dataset>
11691207
</repository>
11701208
</config>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\ConfigurableProduct\Test\TestCase;
9+
10+
use Magento\Mtf\TestCase\Scenario;
11+
12+
/**
13+
* Preconditions:
14+
* 1. Choose an attribute for configurable options or create it and set attribute properties to
15+
* 2. is_filterable = Filterable (with results)
16+
* 3. is_filterable_in_search = Yes
17+
*
18+
* Steps:
19+
* 1. Log in to Admin.
20+
* 2. Open Catalog -> Products.
21+
* 3. Create a configurable product with an attribute from preconditions.
22+
* 4. Search and open child of configurable product from preconditions.
23+
* 4. Fill in data according to dataset.
24+
* 5. Save product.
25+
* 6. Perform all assertions.
26+
*
27+
* @group Configurable_Product
28+
* @ZephyrId MAGETWO-89751
29+
*/
30+
class VerifyConfigurableProductLayeredNavigationTest extends Scenario
31+
{
32+
/**
33+
* Verify configurable product options in layered navigation.
34+
*
35+
* @return array
36+
*/
37+
public function test()
38+
{
39+
$this->executeScenario();
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
9+
<testCase name="Magento\ConfigurableProduct\Test\TestCase\VerifyConfigurableProductLayeredNavigationTest" summary="Verify OOS option configurable product in Layered Navigation on storefront">
10+
<variation name="VerifyConfigurableProductLayeredNavigationTestVariation1" summary="Verify the out of stock configurable attribute option doesn't show in Layered navigation" ticketId="MAGETWO-89745">
11+
<data name="product" xsi:type="string">configurableProduct::product_with_3_sizes</data>
12+
<data name="productUpdate/childProductUpdate" xsi:type="array">
13+
<item name="data" xsi:type="array">
14+
<item name="quantity_and_stock_status" xsi:type="array">
15+
<item name="is_in_stock" xsi:type="string">Out of Stock</item>
16+
</item>
17+
</item>
18+
</data>
19+
<data name="productUpdate/optionNumber" xsi:type="string">1</data>
20+
<data name="outOfStockOption" xsi:type="string">SIZE_S</data>
21+
<constraint name="Magento\ConfigurableProduct\Test\Constraint\AssertConfigurableProductAttributeOptionNotInLayeredNavigation" />
22+
</variation>
23+
</testCase>
24+
</config>

0 commit comments

Comments
 (0)