Skip to content

Commit d72f87f

Browse files
Merge remote-tracking branch 'remotes/github/2.3-develop' into EPAM-PR-77
2 parents 27b20d5 + db0dce6 commit d72f87f

File tree

17 files changed

+1057
-63
lines changed

17 files changed

+1057
-63
lines changed

app/code/Magento/CatalogGraphQl/Model/Resolver/Product/PriceRange.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,16 @@ public function resolve(
6262
$product = $value['model'];
6363
$product->unsetData('minimal_price');
6464

65-
return [
66-
'minimum_price' => $this->getMinimumProductPrice($product, $store),
67-
'maximum_price' => $this->getMaximumProductPrice($product, $store)
68-
];
65+
$requestedFields = $info->getFieldSelection(10);
66+
$returnArray = [];
67+
68+
if (isset($requestedFields['minimum_price'])) {
69+
$returnArray['minimum_price'] = $this->getMinimumProductPrice($product, $store);
70+
}
71+
if (isset($requestedFields['maximum_price'])) {
72+
$returnArray['maximum_price'] = $this->getMaximumProductPrice($product, $store);
73+
}
74+
return $returnArray;
6975
}
7076

7177
/**
@@ -80,8 +86,9 @@ private function getMinimumProductPrice(SaleableInterface $product, StoreInterfa
8086
$priceProvider = $this->priceProviderPool->getProviderByProductType($product->getTypeId());
8187
$regularPrice = $priceProvider->getMinimalRegularPrice($product)->getValue();
8288
$finalPrice = $priceProvider->getMinimalFinalPrice($product)->getValue();
83-
84-
return $this->formatPrice($regularPrice, $finalPrice, $store);
89+
$minPriceArray = $this->formatPrice($regularPrice, $finalPrice, $store);
90+
$minPriceArray['model'] = $product;
91+
return $minPriceArray;
8592
}
8693

8794
/**
@@ -96,8 +103,9 @@ private function getMaximumProductPrice(SaleableInterface $product, StoreInterfa
96103
$priceProvider = $this->priceProviderPool->getProviderByProductType($product->getTypeId());
97104
$regularPrice = $priceProvider->getMaximalRegularPrice($product)->getValue();
98105
$finalPrice = $priceProvider->getMaximalFinalPrice($product)->getValue();
99-
100-
return $this->formatPrice($regularPrice, $finalPrice, $store);
106+
$maxPriceArray = $this->formatPrice($regularPrice, $finalPrice, $store);
107+
$maxPriceArray['model'] = $product;
108+
return $maxPriceArray;
101109
}
102110

103111
/**

app/code/Magento/CatalogGraphQl/etc/schema.graphqls

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ type Price @doc(description: "Price is deprecated, replaced by ProductPrice. The
2121
adjustments: [PriceAdjustment] @deprecated(reason: "Price is deprecated, use ProductPrice.") @doc(description: "An array that provides information about tax, weee, or weee_tax adjustments.")
2222
}
2323

24-
type PriceAdjustment @doc(description: "The PricedAdjustment object defines the amount of money to apply as an adjustment, the type of adjustment to apply, and whether the item is included or excluded from the adjustment.") {
24+
type PriceAdjustment @doc(description: "PriceAdjustment is deprecated. Taxes will be included or excluded in the price. The PricedAdjustment object defines the amount of money to apply as an adjustment, the type of adjustment to apply, and whether the item is included or excluded from the adjustment.") {
2525
amount: Money @doc(description: "The amount of the price adjustment and its currency code.")
26-
code: PriceAdjustmentCodesEnum @doc(description: "Indicates whether the adjustment involves tax, weee, or weee_tax.")
27-
description: PriceAdjustmentDescriptionEnum @doc(description: "Indicates whether the entity described by the code attribute is included or excluded from the adjustment.")
26+
code: PriceAdjustmentCodesEnum @deprecated(reason: "PriceAdjustment is deprecated.") @doc(description: "Indicates whether the adjustment involves tax, weee, or weee_tax.")
27+
description: PriceAdjustmentDescriptionEnum @deprecated(reason: "PriceAdjustment is deprecated.") @doc(description: "Indicates whether the entity described by the code attribute is included or excluded from the adjustment.")
2828
}
2929

30-
enum PriceAdjustmentCodesEnum @doc(description: "Note: This enumeration contains values defined in modules other than the Catalog module.") {
30+
enum PriceAdjustmentCodesEnum @doc(description: "PriceAdjustment.code is deprecated. This enumeration contains values defined in modules other than the Catalog module.") {
3131
}
3232

33-
enum PriceAdjustmentDescriptionEnum @doc(description: "This enumeration states whether a price adjustment is included or excluded.") {
33+
enum PriceAdjustmentDescriptionEnum @doc(description: "PriceAdjustmentDescriptionEnum is deprecated. This enumeration states whether a price adjustment is included or excluded.") {
3434
INCLUDED
3535
EXCLUDED
3636
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AdminAddImageToCMSBlockContent">
11+
<arguments>
12+
<argument name="image" type="entity" defaultValue="MagentoLogo"/>
13+
</arguments>
14+
<click selector="{{TinyMCESection.InsertImage}}" stepKey="clickAddImageButton"/>
15+
<waitForElementVisible selector="{{MediaGallerySection.Browse}}" stepKey="waitForBrowseImage"/>
16+
<click selector="{{MediaGallerySection.Browse}}" stepKey="clickBrowseImage"/>
17+
<waitForElementVisible selector="{{MediaGallerySection.StorageRootArrow}}" stepKey="waitForAttacheFiles"/>
18+
<waitForLoadingMaskToDisappear stepKey="waitForStorageRootLoadingMaskDisappear"/>
19+
<click selector="{{MediaGallerySection.StorageRootArrow}}" stepKey="clickRoot"/>
20+
<waitForPageLoad stepKey="waitForPageLoad"/>
21+
<attachFile selector="{{MediaGallerySection.BrowseUploadImage}}" userInput="{{image.file}}" stepKey="attachLogo"/>
22+
<waitForElementVisible selector="{{MediaGallerySection.InsertFile}}" stepKey="waitForAddSelected"/>
23+
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskDisappear"/>
24+
<click selector="{{MediaGallerySection.InsertFile}}" stepKey="clickAddSelected"/>
25+
<waitForElementVisible selector="{{MediaGallerySection.OkBtn}}" stepKey="waitForOkButton"/>
26+
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear2"/>
27+
<click selector="{{MediaGallerySection.OkBtn}}" stepKey="clickOk"/>
28+
</actionGroup>
29+
</actionGroups>

app/code/Magento/Cms/Test/Mftf/Section/CmsNewBlockBlockActionsSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
</section>
2525
<section name="BlockContentSection">
2626
<element name="TextArea" type="input" selector="#cms_block_form_content"/>
27+
<element name="image" type="file" selector="#tinymce img"/>
28+
<element name="contentIframe" type="iframe" selector="cms_block_form_content_ifr"/>
2729
</section>
2830
<section name="CmsBlockBlockActionSection">
2931
<element name="deleteBlock" type="button" selector="#delete" timeout="30"/>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminMediaGalleryPopupUploadImagesWithoutErrorTest">
11+
<annotations>
12+
<features value="Cms"/>
13+
<stories value="Spinner is Always Displayed on Media Gallery popup"/>
14+
<title value="Media Gallery popup upload images without error"/>
15+
<description value="Media Gallery popup upload images without error"/>
16+
<severity value="CRITICAL"/>
17+
<testCaseId value="MC-18962"/>
18+
<useCaseId value="MC-18709"/>
19+
<group value="Cms"/>
20+
</annotations>
21+
<before>
22+
<!--Enable WYSIWYG options-->
23+
<comment userInput="Enable WYSIWYG options" stepKey="commentEnableWYSIWYG"/>
24+
<magentoCLI command="config:set cms/wysiwyg/enabled enabled" stepKey="enableWYSIWYGEditor"/>
25+
<magentoCLI command="config:set cms/wysiwyg/editor 'TinyMCE 4'" stepKey="setValueWYSIWYGEditor"/>
26+
<!--Create block-->
27+
<comment userInput="Create block" stepKey="commentCreateBlock"/>
28+
<createData entity="Sales25offBlock" stepKey="createBlock"/>
29+
<actionGroup ref="LoginActionGroup" stepKey="login"/>
30+
</before>
31+
<after>
32+
<!--Disable WYSIWYG options-->
33+
<comment userInput="Disable WYSIWYG options" stepKey="commentDisableWYSIWYG"/>
34+
<magentoCLI command="config:set cms/wysiwyg/enabled disabled" stepKey="disableWYSIWYG"/>
35+
<deleteData createDataKey="createBlock" stepKey="deleteBlock" />
36+
<actionGroup ref="logout" stepKey="logout"/>
37+
</after>
38+
<!--Open created block page and add image-->
39+
<comment userInput="Open create block page and add image" stepKey="commentOpenBlockPage"/>
40+
<actionGroup ref="navigateToCreatedCMSBlockPage" stepKey="navigateToCreatedCMSBlockPage1">
41+
<argument name="CMSBlockPage" value="$$createBlock$$"/>
42+
</actionGroup>
43+
<actionGroup ref="AdminAddImageToCMSBlockContent" stepKey="addImage">
44+
<argument name="image" value="TestImageNew"/>
45+
</actionGroup>
46+
<click selector="{{BlockWYSIWYGSection.ShowHideBtn}}" stepKey="clickShowHideBtnFirstTime"/>
47+
<click selector="{{BlockWYSIWYGSection.ShowHideBtn}}" stepKey="clickShowHideBtnSecondTime"/>
48+
<waitForPageLoad stepKey="waitForPageLoad"/>
49+
<!--Switch to content frame and click on image-->
50+
<comment userInput="Switch to content frame and click on image" stepKey="commentSwitchToIframe"/>
51+
<switchToIFrame selector="{{BlockContentSection.contentIframe}}" stepKey="switchToContentFrame"/>
52+
<click selector="{{BlockContentSection.image}}" stepKey="clickImage"/>
53+
<switchToIFrame stepKey="switchBack"/>
54+
<!--Add image second time and assert-->
55+
<comment userInput="Add image second time and assert" stepKey="commentAddImageAndAssert"/>
56+
<actionGroup ref="AdminAddImageToCMSBlockContent" stepKey="addImageSecondTime">
57+
<argument name="image" value="MagentoLogo"/>
58+
</actionGroup>
59+
<switchToIFrame selector="{{BlockContentSection.contentIframe}}" stepKey="switchToContentFrameSecondTime"/>
60+
<seeElement selector="{{BlockContentSection.image}}" stepKey="seeImageElement"/>
61+
</test>
62+
</tests>

app/code/Magento/TaxGraphQl/etc/schema.graphqls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
# See COPYING.txt for license details.
33

44
enum PriceAdjustmentCodesEnum {
5-
TAX
5+
TAX @deprecated(reason: "PriceAdjustmentCodesEnum is deprecated. Tax is included or excluded in price. Tax is not shown separtely in Catalog")
66
}

app/code/Magento/Weee/Model/ResourceModel/Tax.php

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
*/
66
namespace Magento\Weee\Model\ResourceModel;
77

8-
use Magento\Catalog\Model\Product;
9-
use Magento\Catalog\Model\Product\Condition\ConditionInterface;
10-
118
/**
129
* Wee tax resource model
1310
*
@@ -21,6 +18,11 @@ class Tax extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
2118
*/
2219
protected $dateTime;
2320

21+
/**
22+
* @var array
23+
*/
24+
private $weeeTaxCalculationsByEntityCache = [];
25+
2426
/**
2527
* @param \Magento\Framework\Model\ResourceModel\Db\Context $context
2628
* @param \Magento\Framework\Stdlib\DateTime $dateTime
@@ -46,7 +48,7 @@ protected function _construct()
4648
}
4749

4850
/**
49-
* Fetch one
51+
* Fetch one calculated weee attribute from a select criteria
5052
*
5153
* @param \Magento\Framework\DB\Select|string $select
5254
* @return string
@@ -57,6 +59,8 @@ public function fetchOne($select)
5759
}
5860

5961
/**
62+
* Is there a weee attribute available for the location provided
63+
*
6064
* @param int $countryId
6165
* @param int $regionId
6266
* @param int $websiteId
@@ -91,6 +95,8 @@ public function isWeeeInLocation($countryId, $regionId, $websiteId)
9195
}
9296

9397
/**
98+
* Fetch calculated weee attributes by location, store and entity
99+
*
94100
* @param int $countryId
95101
* @param int $regionId
96102
* @param int $websiteId
@@ -100,43 +106,56 @@ public function isWeeeInLocation($countryId, $regionId, $websiteId)
100106
*/
101107
public function fetchWeeeTaxCalculationsByEntity($countryId, $regionId, $websiteId, $storeId, $entityId)
102108
{
103-
$attributeSelect = $this->getConnection()->select();
104-
$attributeSelect->from(
105-
['eavTable' => $this->getTable('eav_attribute')],
106-
['eavTable.attribute_code', 'eavTable.attribute_id', 'eavTable.frontend_label']
107-
)->joinLeft(
108-
['eavLabel' => $this->getTable('eav_attribute_label')],
109-
'eavLabel.attribute_id = eavTable.attribute_id and eavLabel.store_id = ' .((int) $storeId),
110-
'eavLabel.value as label_value'
111-
)->joinInner(
112-
['weeeTax' => $this->getTable('weee_tax')],
113-
'weeeTax.attribute_id = eavTable.attribute_id',
114-
'weeeTax.value as weee_value'
115-
)->where(
116-
'eavTable.frontend_input = ?',
117-
'weee'
118-
)->where(
119-
'weeeTax.website_id IN(?)',
120-
[$websiteId, 0]
121-
)->where(
122-
'weeeTax.country = ?',
123-
$countryId
124-
)->where(
125-
'weeeTax.state IN(?)',
126-
[$regionId, 0]
127-
)->where(
128-
'weeeTax.entity_id = ?',
129-
(int)$entityId
109+
$cacheKey = sprintf(
110+
'%s-%s-%s-%s-%s',
111+
$countryId,
112+
$regionId,
113+
$websiteId,
114+
$storeId,
115+
$entityId
130116
);
117+
if (!isset($this->weeeTaxCalculationsByEntityCache[$cacheKey])) {
118+
$attributeSelect = $this->getConnection()->select();
119+
$attributeSelect->from(
120+
['eavTable' => $this->getTable('eav_attribute')],
121+
['eavTable.attribute_code', 'eavTable.attribute_id', 'eavTable.frontend_label']
122+
)->joinLeft(
123+
['eavLabel' => $this->getTable('eav_attribute_label')],
124+
'eavLabel.attribute_id = eavTable.attribute_id and eavLabel.store_id = ' . ((int)$storeId),
125+
'eavLabel.value as label_value'
126+
)->joinInner(
127+
['weeeTax' => $this->getTable('weee_tax')],
128+
'weeeTax.attribute_id = eavTable.attribute_id',
129+
'weeeTax.value as weee_value'
130+
)->where(
131+
'eavTable.frontend_input = ?',
132+
'weee'
133+
)->where(
134+
'weeeTax.website_id IN(?)',
135+
[$websiteId, 0]
136+
)->where(
137+
'weeeTax.country = ?',
138+
$countryId
139+
)->where(
140+
'weeeTax.state IN(?)',
141+
[$regionId, 0]
142+
)->where(
143+
'weeeTax.entity_id = ?',
144+
(int)$entityId
145+
);
131146

132-
$order = ['weeeTax.state ' . \Magento\Framework\DB\Select::SQL_DESC,
133-
'weeeTax.website_id ' . \Magento\Framework\DB\Select::SQL_DESC];
134-
$attributeSelect->order($order);
147+
$order = ['weeeTax.state ' . \Magento\Framework\DB\Select::SQL_DESC,
148+
'weeeTax.website_id ' . \Magento\Framework\DB\Select::SQL_DESC];
149+
$attributeSelect->order($order);
135150

136-
$values = $this->getConnection()->fetchAll($attributeSelect);
151+
$values = $this->getConnection()->fetchAll($attributeSelect);
137152

138-
if ($values) {
139-
return $values;
153+
if ($values) {
154+
$this->weeeTaxCalculationsByEntityCache[$cacheKey] = $values;
155+
return $values;
156+
}
157+
} else {
158+
return $this->weeeTaxCalculationsByEntityCache[$cacheKey];
140159
}
141160

142161
return [];

0 commit comments

Comments
 (0)