Skip to content

Commit 47b6cbc

Browse files
committed
MAGETWO-88177: Create Functional Test to verify if Ordered Products Grid displays child simple products SKU for a configurable product
1 parent e70fff5 commit 47b6cbc

File tree

7 files changed

+206
-1
lines changed

7 files changed

+206
-1
lines changed

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

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ class Grid extends \Magento\Backend\Test\Block\Widget\Grid
3434
*/
3535
protected $product = './/*[contains(.,"%s")]/*[contains(@class,"col-qty")]';
3636

37+
/**
38+
* Product sku from grid locator
39+
*
40+
* @var string
41+
*/
42+
private $productSku = './/*[contains(.,"%s")]/*[contains(@class,"col-sku")]';
43+
3744
/**
3845
* Filter locator
3946
*
@@ -102,4 +109,23 @@ public function getOrdersResults(OrderInjectable $order)
102109
}
103110
return $views;
104111
}
112+
113+
/**
114+
* Get product sku from Ordered Products Report grid.
115+
*
116+
* @param OrderInjectable $order
117+
* @return array
118+
*/
119+
public function getOrdersResultsforConfigurableProducts(OrderInjectable $order)
120+
{
121+
$products = $order->getEntityId()['products'];
122+
$skus = [];
123+
124+
foreach ($products as $key => $productSku) {
125+
$skus[$key] = $this->_rootElement
126+
->find(sprintf($this->productSku, $productSku->getName()), Locator::SELECTOR_XPATH)->getText();
127+
}
128+
129+
return $skus;
130+
}
105131
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Reports\Test\Constraint;
8+
9+
use Magento\ConfigurableProduct\Test\Fixture\ConfigurableProduct;
10+
use Magento\Reports\Test\Page\Adminhtml\OrderedProductsReport;
11+
use Magento\Sales\Test\Fixture\OrderInjectable;
12+
use Magento\Mtf\Constraint\AbstractConstraint;
13+
14+
/**
15+
* Assert product name, sku and qty in Ordered Products report.
16+
*/
17+
class AssertOrderedProductReportForConfigurableProduct extends AbstractConstraint
18+
{
19+
/**
20+
* Assert product name, sku and qty in Ordered Products report.
21+
*
22+
* @param OrderedProductsReport $orderedProducts
23+
* @param OrderInjectable $order
24+
* @return void
25+
*/
26+
public function processAssert(OrderedProductsReport $orderedProducts, OrderInjectable $order)
27+
{
28+
$products = $order->getEntityId()['products'];
29+
$simpleChildSku = $orderedProducts->getGridBlock()->getOrdersResultsforConfigurableProducts($order);
30+
$filters = [];
31+
foreach ($products as $product) {
32+
/** @var ConfigurableProduct $product */
33+
if ($product->hasData('configurable_attributes_data')) {
34+
$matrix = isset($product->getConfigurableAttributesData()['matrix']) ?
35+
$product->getConfigurableAttributesData()['matrix'] : [];
36+
foreach ($matrix as $variation) {
37+
$filters[] = $variation['sku'];
38+
}
39+
}
40+
}
41+
42+
\PHPUnit\Framework\Assert::assertContains(
43+
$simpleChildSku[0],
44+
$filters,
45+
'Ordered simple product sku is not present in the Reports grid'
46+
);
47+
}
48+
49+
/**
50+
* Returns a string representation of the object.
51+
*
52+
* @return string
53+
*/
54+
public function toString()
55+
{
56+
return 'Child product sku is present on the Ordered Products report grid';
57+
}
58+
}

dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/OrderedProductsReportEntityTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class OrderedProductsReportEntityTest extends Injectable
2828
{
2929
/* tags */
3030
const MVP = 'no';
31-
const STABLE = 'no';
3231
/* end tags */
3332

3433
/**

dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/OrderedProductsReportEntityTest.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,13 @@
2828
<data name="customersReport/report_period" xsi:type="string">Day</data>
2929
<constraint name="Magento\Reports\Test\Constraint\AssertOrderedProductResult" />
3030
</variation>
31+
<variation name="OrderedProductsReportEntityTestVariation4" summary="Ordered Product Report for Configurable Product" ticketId="MAGETWO-75456">
32+
<data name="order/dataset" xsi:type="string">configurable_product</data>
33+
<data name="customersReport/report_from" xsi:type="string">m/d/Y -1 day</data>
34+
<data name="customersReport/report_to" xsi:type="string">m/d/Y</data>
35+
<data name="customersReport/report_period" xsi:type="string">Day</data>
36+
<constraint name="Magento\Reports\Test\Constraint\AssertOrderedProductResult" />
37+
<constraint name="Magento\Reports\Test\Constraint\AssertOrderedProductReportForConfigurableProduct" />
38+
</variation>
3139
</testCase>
3240
</config>

dev/tests/functional/tests/app/Magento/Sales/Test/Repository/OrderInjectable.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,5 +326,29 @@
326326
<field name="base_currency_code" xsi:type="string">0</field>
327327
<field name="order_currency_code" xsi:type="string">USD</field>
328328
</dataset>
329+
330+
<dataset name="configurable_product">
331+
<field name="entity_id" xsi:type="array">
332+
<item name="products" xsi:type="string">configurableProduct::with_only_two_options</item>
333+
</field>
334+
<field name="customer_id" xsi:type="array">
335+
<item name="dataset" xsi:type="string">default</item>
336+
</field>
337+
<field name="billing_address_id" xsi:type="array">
338+
<item name="dataset" xsi:type="string">US_address</item>
339+
</field>
340+
<field name="store_id" xsi:type="array">
341+
<item name="dataset" xsi:type="string">default_store_view</item>
342+
</field>
343+
<field name="payment_auth_expiration" xsi:type="array">
344+
<item name="method" xsi:type="string">checkmo</item>
345+
</field>
346+
<field name="shipping_method" xsi:type="string">flatrate_flatrate</field>
347+
<field name="payment_authorization_amount" xsi:type="array">
348+
<item name="method" xsi:type="string">free</item>
349+
</field>
350+
<field name="base_currency_code" xsi:type="string">0</field>
351+
<field name="order_currency_code" xsi:type="string">USD</field>
352+
</dataset>
329353
</repository>
330354
</config>

0 commit comments

Comments
 (0)