diff --git a/app/code/Magento/Bundle/Test/Unit/Model/Product/TypeTest.php b/app/code/Magento/Bundle/Test/Unit/Model/Product/TypeTest.php
index b7041051591d8..9c4d4ce00b7c0 100644
--- a/app/code/Magento/Bundle/Test/Unit/Model/Product/TypeTest.php
+++ b/app/code/Magento/Bundle/Test/Unit/Model/Product/TypeTest.php
@@ -11,7 +11,6 @@
use Magento\Bundle\Model\Product\Type;
use Magento\Bundle\Model\ResourceModel\BundleFactory;
use Magento\Bundle\Model\ResourceModel\Option\Collection;
-use Magento\CatalogRule\Model\ResourceModel\Product\CollectionProcessor;
use Magento\Bundle\Model\ResourceModel\Selection\Collection as SelectionCollection;
use Magento\Bundle\Model\ResourceModel\Selection\CollectionFactory;
use Magento\Bundle\Model\Selection;
@@ -28,6 +27,7 @@
use Magento\CatalogInventory\Api\StockStateInterface;
use Magento\CatalogInventory\Model\StockRegistry;
use Magento\CatalogInventory\Model\StockState;
+use Magento\CatalogRule\Model\ResourceModel\Product\CollectionProcessor;
use Magento\Framework\DataObject;
use Magento\Framework\EntityManager\EntityMetadataInterface;
use Magento\Framework\EntityManager\MetadataPool;
@@ -1548,6 +1548,10 @@ public function testPrepareForCartAdvancedSpecifyProductOptions()
->disableOriginalConstructor()
->getMock();
+ $buyRequest->method('getOptions')
+ ->willReturn([333 => ['type' => 'image/jpeg']]);
+ $option->method('getId')
+ ->willReturn(333);
$this->parentClass($group, $option, $buyRequest, $product);
$product->expects($this->any())
@@ -1556,6 +1560,8 @@ public function testPrepareForCartAdvancedSpecifyProductOptions()
$buyRequest->expects($this->once())
->method('getBundleOption')
->willReturn([0, '', 'str']);
+ $group->expects($this->once())
+ ->method('validateUserValue');
$result = $this->model->prepareForCartAdvanced($buyRequest, $product);
$this->assertEquals('Please specify product option(s).', $result);
diff --git a/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php b/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
index f90b097415661..19f6461d44b6a 100644
--- a/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
+++ b/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
@@ -3,7 +3,6 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-declare(strict_types=1);
namespace Magento\Catalog\Model\Product\Type;
@@ -605,7 +604,11 @@ protected function _prepareOptions(\Magento\Framework\DataObject $buyRequest, $p
if ($product->getSkipCheckRequiredOption() !== true) {
$group->validateUserValue($optionsFromRequest);
} elseif ($optionsFromRequest !== null && isset($optionsFromRequest[$option->getId()])) {
- $transport->options[$option->getId()] = $optionsFromRequest[$option->getId()];
+ if (is_array($optionsFromRequest[$option->getId()])) {
+ $group->validateUserValue($optionsFromRequest);
+ } else {
+ $transport->options[$option->getId()] = $optionsFromRequest[$option->getId()];
+ }
}
} catch (LocalizedException $e) {
diff --git a/app/code/Magento/Sales/Model/RtlTextHandler.php b/app/code/Magento/Sales/Model/RtlTextHandler.php
index cfb88dc63f58b..b943320e0f897 100644
--- a/app/code/Magento/Sales/Model/RtlTextHandler.php
+++ b/app/code/Magento/Sales/Model/RtlTextHandler.php
@@ -48,7 +48,7 @@ public function reverseRtlText(string $string): string
for ($i = 0; $i < $splitTextAmount; $i++) {
if ($this->isRtlText($splitText[$i])) {
- for ($j = $i + 1; $j < $splitTextAmount; $j++) {
+ for ($j = $i; $j < $splitTextAmount; $j++) {
$tmp = $this->isRtlText($splitText[$j])
? $this->stringUtils->strrev($splitText[$j]) : $splitText[$j];
$splitText[$j] = $this->isRtlText($splitText[$i])
diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminGoToOrderStatusPageActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminGoToOrderStatusPageActionGroup.xml
new file mode 100644
index 0000000000000..a47d9858652e9
--- /dev/null
+++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminGoToOrderStatusPageActionGroup.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Goes to Stores->Order Status->Order Status Page.
+
+
+
+
+
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingCodeTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingCodeTest.xml
index 23dca916781f1..5c61a8b089b97 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingCodeTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingCodeTest.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingLabelTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingLabelTest.xml
index d3cd3e8b8549c..5fdc6c844f45e 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingLabelTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusDuplicatingLabelTest.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusTest.xml
index a30040045a4ca..e424fa78362fc 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderStatusTest.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminUnassignCustomOrderStatusTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminUnassignCustomOrderStatusTest.xml
index 226524341efdd..0a533e7c9c767 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AdminUnassignCustomOrderStatusTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminUnassignCustomOrderStatusTest.xml
@@ -25,7 +25,7 @@
-
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AssignCustomOrderStatusNotVisibleOnStorefrontTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AssignCustomOrderStatusNotVisibleOnStorefrontTest.xml
index a5d210a9765ad..b080f753a7e71 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AssignCustomOrderStatusNotVisibleOnStorefrontTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AssignCustomOrderStatusNotVisibleOnStorefrontTest.xml
@@ -47,7 +47,7 @@
-
+
@@ -119,7 +119,7 @@
-
+
diff --git a/app/code/Magento/Sales/Test/Unit/Model/RtlTextHandlerTest.php b/app/code/Magento/Sales/Test/Unit/Model/RtlTextHandlerTest.php
index 2faeb17dc2395..1a8159dbf4cbb 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/RtlTextHandlerTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/RtlTextHandlerTest.php
@@ -62,6 +62,7 @@ public function provideRtlTexts(): array
['Herr Prof. Dr. Gerald Schüler B.A.', false],//German
['نديم مقداد نعمان القحطاني', true],//Arabic
['شهاب الفرحان', true],//Arabic
+ ['مرحبا ماجنت اثنان', true],//Arabic
['צבר קרליבך', true],//Hebrew
['גורי מייזליש', true],//Hebrew
['اتابک بهشتی', true],//Persian
diff --git a/app/code/Magento/Sales/Test/Unit/Ui/Component/Listing/Column/PriceTest.php b/app/code/Magento/Sales/Test/Unit/Ui/Component/Listing/Column/PriceTest.php
index 4a9061c3f3c5c..449ab230b568d 100644
--- a/app/code/Magento/Sales/Test/Unit/Ui/Component/Listing/Column/PriceTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Ui/Component/Listing/Column/PriceTest.php
@@ -17,6 +17,9 @@
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
+/**
+ * Contains tests for Price class
+ */
class PriceTest extends TestCase
{
/**
@@ -34,6 +37,9 @@ class PriceTest extends TestCase
*/
private $storeManagerMock;
+ /**
+ * @inheritDoc
+ */
protected function setUp(): void
{
$objectManager = new ObjectManager($this);
@@ -57,12 +63,20 @@ protected function setUp(): void
}
/**
- * @param $hasCurrency
- * @param $dataSource
- * @param $currencyCode
+ * Test for prepareDataSource method
+ *
+ * @param bool $hasCurrency
+ * @param array $dataSource
+ * @param string $currencyCode
+ * @param int|null $expectedStoreId
* @dataProvider testPrepareDataSourceDataProvider
*/
- public function testPrepareDataSource($hasCurrency, $dataSource, $currencyCode)
+ public function testPrepareDataSource(
+ bool $hasCurrency,
+ array $dataSource,
+ string $currencyCode,
+ ?int $expectedStoreId = null
+ ): void
{
$itemName = 'itemName';
$oldItemValue = 'oldItemValue';
@@ -79,6 +93,7 @@ public function testPrepareDataSource($hasCurrency, $dataSource, $currencyCode)
->willReturn($currencyCode);
$this->storeManagerMock->expects($hasCurrency ? $this->never() : $this->once())
->method('getStore')
+ ->with($expectedStoreId)
->willReturn($store);
$store->expects($hasCurrency ? $this->never() : $this->once())
->method('getBaseCurrency')
@@ -98,7 +113,12 @@ public function testPrepareDataSource($hasCurrency, $dataSource, $currencyCode)
$this->assertEquals($newItemValue, $dataSource['data']['items'][0][$itemName]);
}
- public function testPrepareDataSourceDataProvider()
+ /**
+ * Provider for testPrepareDataSource
+ *
+ * @return array
+ */
+ public function testPrepareDataSourceDataProvider(): array
{
$dataSource1 = [
'data' => [
@@ -119,9 +139,31 @@ public function testPrepareDataSourceDataProvider()
]
]
];
+ $dataSource3 = [
+ 'data' => [
+ 'items' => [
+ [
+ 'itemName' => 'oldItemValue',
+ 'store_id' => '2'
+ ]
+ ]
+ ]
+ ];
+ $dataSource4 = [
+ 'data' => [
+ 'items' => [
+ [
+ 'itemName' => 'oldItemValue',
+ 'store_id' => 'abc'
+ ]
+ ]
+ ]
+ ];
return [
[true, $dataSource1, 'US'],
[false, $dataSource2, 'SAR'],
+ [false, $dataSource3, 'SAR', 2],
+ [false, $dataSource4, 'SAR'],
];
}
}
diff --git a/app/code/Magento/Sales/Ui/Component/Listing/Column/Price.php b/app/code/Magento/Sales/Ui/Component/Listing/Column/Price.php
index 4ffb6f98447c7..cc323730f14b4 100644
--- a/app/code/Magento/Sales/Ui/Component/Listing/Column/Price.php
+++ b/app/code/Magento/Sales/Ui/Component/Listing/Column/Price.php
@@ -10,6 +10,7 @@
use Magento\Framework\App\ObjectManager;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
+use Magento\Store\Model\Store;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Ui\Component\Listing\Columns\Column;
use Magento\Framework\Pricing\PriceCurrencyInterface;
@@ -77,8 +78,10 @@ public function prepareDataSource(array $dataSource)
foreach ($dataSource['data']['items'] as & $item) {
$currencyCode = isset($item['base_currency_code']) ? $item['base_currency_code'] : null;
if (!$currencyCode) {
+ $storeId = isset($item['store_id']) && (int)$item['store_id'] !== 0 ? $item['store_id'] :
+ $this->context->getFilterParam('store_id', Store::DEFAULT_STORE_ID);
$store = $this->storeManager->getStore(
- $this->context->getFilterParam('store_id', \Magento\Store\Model\Store::DEFAULT_STORE_ID)
+ $storeId
);
$currencyCode = $store->getBaseCurrency()->getCurrencyCode();
}