diff --git a/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php b/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php
index 81ee9b15781d1..b4b7adebf7459 100644
--- a/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php
+++ b/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php
@@ -11,6 +11,7 @@
/**
* Responsible for Select object creation, works as a builder. Returns Select as result;
+ *
* Used in SQL assemblers.
*/
class SelectBuilder
@@ -85,11 +86,13 @@ public function getJoins()
* Set joins conditions
*
* @param array $joins
- * @return void
+ * @return $this
*/
public function setJoins($joins)
{
$this->joins = $joins;
+
+ return $this;
}
/**
@@ -106,11 +109,13 @@ public function getConnectionName()
* Set connection name
*
* @param string $connectionName
- * @return void
+ * @return $this
*/
public function setConnectionName($connectionName)
{
$this->connectionName = $connectionName;
+
+ return $this;
}
/**
@@ -127,11 +132,13 @@ public function getColumns()
* Set columns
*
* @param array $columns
- * @return void
+ * @return $this
*/
public function setColumns($columns)
{
$this->columns = $columns;
+
+ return $this;
}
/**
@@ -148,11 +155,13 @@ public function getFilters()
* Set filters
*
* @param array $filters
- * @return void
+ * @return $this
*/
public function setFilters($filters)
{
$this->filters = $filters;
+
+ return $this;
}
/**
@@ -169,11 +178,13 @@ public function getFrom()
* Set from condition
*
* @param array $from
- * @return void
+ * @return $this
*/
public function setFrom($from)
{
$this->from = $from;
+
+ return $this;
}
/**
@@ -236,11 +247,13 @@ public function getGroup()
* Set group
*
* @param array $group
- * @return void
+ * @return $this
*/
public function setGroup($group)
{
$this->group = $group;
+
+ return $this;
}
/**
@@ -257,11 +270,13 @@ public function getParams()
* Set parameters
*
* @param array $params
- * @return void
+ * @return $this
*/
public function setParams($params)
{
$this->params = $params;
+
+ return $this;
}
/**
@@ -278,10 +293,12 @@ public function getHaving()
* Set having condition
*
* @param array $having
- * @return void
+ * @return $this
*/
public function setHaving($having)
{
$this->having = $having;
+
+ return $this;
}
}
diff --git a/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php b/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php
index 8be2f0ee968ef..a4362d583dfbc 100644
--- a/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php
+++ b/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php
@@ -64,12 +64,12 @@ public function testCreate()
['link-type' => 'right', 'table' => 'attribute', 'condition' => 'neq'],
];
$groups = ['id', 'name'];
- $this->selectBuilder->setConnectionName($connectionName);
- $this->selectBuilder->setFrom($from);
- $this->selectBuilder->setColumns($columns);
- $this->selectBuilder->setFilters([$filter]);
- $this->selectBuilder->setJoins($joins);
- $this->selectBuilder->setGroup($groups);
+ $this->selectBuilder->setConnectionName($connectionName)
+ ->setFrom($from)
+ ->setColumns($columns)
+ ->setFilters([$filter])
+ ->setJoins($joins)
+ ->setGroup($groups);
$this->resourceConnectionMock->expects($this->once())
->method('getConnection')
->with($connectionName)
diff --git a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml
index 805e9783f3f18..52d5dd6d114ee 100644
--- a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml
+++ b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml
@@ -43,7 +43,7 @@
data-validate="{required:true}"
value=""
placeholder="= /* @escapeNotVerified */ __('password') ?>"
- autocomplete="new-password"
+ autocomplete="off"
/>
diff --git a/app/code/Magento/Bundle/etc/db_schema.xml b/app/code/Magento/Bundle/etc/db_schema.xml
index 8092f34c533fa..f1c1e7ae782dc 100644
--- a/app/code/Magento/Bundle/etc/db_schema.xml
+++ b/app/code/Magento/Bundle/etc/db_schema.xml
@@ -120,11 +120,11 @@
+ comment="Entity ID"/>
+ comment="Customer Group ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ comment="Stock ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ default="0" comment="Tax Class ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ default="0" comment="Tax Class ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ comment="Entity ID"/>
+ comment="Website ID"/>
providers[$type]->getLinkedProducts($product);
$converter = $this->converterPool->getConverter($type);
- $output = [];
$sorterItems = [];
foreach ($products as $item) {
- $output[$item->getId()] = $converter->convert($item);
+ $itemId = $item->getId();
+ $sorterItems[$itemId] = $converter->convert($item);
+ $sorterItems[$itemId]['position'] = $sorterItems[$itemId]['position'] ?? 0;
}
- foreach ($output as $item) {
- $itemPosition = $item['position'];
- if (!isset($sorterItems[$itemPosition])) {
- $sorterItems[$itemPosition] = $item;
- } else {
- $newPosition = $itemPosition + 1;
- $sorterItems[$newPosition] = $item;
- }
- }
- ksort($sorterItems);
+ usort($sorterItems, function ($itemA, $itemB) {
+ $posA = intval($itemA['position']);
+ $posB = intval($itemB['position']);
+
+ return $posA <=> $posB;
+ });
+
return $sorterItems;
}
}
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/CollectionProviderTest.php b/app/code/Magento/Catalog/Test/Unit/Model/CollectionProviderTest.php
index d8931cbbfcf73..f0e17c7938b27 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/CollectionProviderTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/CollectionProviderTest.php
@@ -57,10 +57,14 @@ public function testGetCollection()
$linkedProductOneMock = $this->createMock(Product::class);
$linkedProductTwoMock = $this->createMock(Product::class);
$linkedProductThreeMock = $this->createMock(Product::class);
+ $linkedProductFourMock = $this->createMock(Product::class);
+ $linkedProductFiveMock = $this->createMock(Product::class);
$linkedProductOneMock->expects($this->once())->method('getId')->willReturn(1);
$linkedProductTwoMock->expects($this->once())->method('getId')->willReturn(2);
$linkedProductThreeMock->expects($this->once())->method('getId')->willReturn(3);
+ $linkedProductFourMock->expects($this->once())->method('getId')->willReturn(4);
+ $linkedProductFiveMock->expects($this->once())->method('getId')->willReturn(5);
$this->converterPoolMock->expects($this->once())
->method('getConverter')
@@ -71,9 +75,11 @@ public function testGetCollection()
[$linkedProductOneMock, ['name' => 'Product One', 'position' => 10]],
[$linkedProductTwoMock, ['name' => 'Product Two', 'position' => 2]],
[$linkedProductThreeMock, ['name' => 'Product Three', 'position' => 2]],
+ [$linkedProductFourMock, ['name' => 'Product Four', 'position' => null]],
+ [$linkedProductFiveMock, ['name' => 'Product Five']],
];
- $this->converterMock->expects($this->exactly(3))->method('convert')->willReturnMap($map);
+ $this->converterMock->expects($this->exactly(5))->method('convert')->willReturnMap($map);
$this->providerMock->expects($this->once())
->method('getLinkedProducts')
@@ -82,14 +88,18 @@ public function testGetCollection()
[
$linkedProductOneMock,
$linkedProductTwoMock,
- $linkedProductThreeMock
+ $linkedProductThreeMock,
+ $linkedProductFourMock,
+ $linkedProductFiveMock,
]
);
$expectedResult = [
- 2 => ['name' => 'Product Two', 'position' => 2],
- 3 => ['name' => 'Product Three', 'position' => 2],
- 10 => ['name' => 'Product One', 'position' => 10],
+ 0 => ['name' => 'Product Four', 'position' => 0],
+ 1 => ['name' => 'Product Five', 'position' => 0],
+ 2 => ['name' => 'Product Three', 'position' => 2],
+ 3 => ['name' => 'Product Two', 'position' => 2],
+ 4 => ['name' => 'Product One', 'position' => 10],
];
$actualResult = $this->model->getCollection($this->productMock, 'crosssell');
diff --git a/app/code/Magento/Catalog/etc/db_schema.xml b/app/code/Magento/Catalog/etc/db_schema.xml
index 7b4e1a96adda0..860e5fee9f157 100644
--- a/app/code/Magento/Catalog/etc/db_schema.xml
+++ b/app/code/Magento/Catalog/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
@@ -41,7 +41,7 @@
+ default="0" comment="Entity ID"/>
@@ -76,7 +76,7 @@
+ default="0" comment="Entity ID"/>
@@ -112,7 +112,7 @@
+ default="0" comment="Entity ID"/>
@@ -148,7 +148,7 @@
+ default="0" comment="Entity ID"/>
@@ -183,7 +183,7 @@
+ default="0" comment="Entity ID"/>
@@ -218,7 +218,7 @@
+ default="0" comment="Entity ID"/>
@@ -251,7 +251,7 @@
+ comment="Entity ID"/>
+ default="0" comment="Entity ID"/>
@@ -324,7 +324,7 @@
+ default="0" comment="Entity ID"/>
@@ -363,7 +363,7 @@
+ default="0" comment="Entity ID"/>
@@ -402,7 +402,7 @@
+ default="0" comment="Entity ID"/>
@@ -440,7 +440,7 @@
+ default="0" comment="Entity ID"/>
@@ -738,7 +738,7 @@
+ default="0" comment="Entity ID"/>
+ default="0" comment="Entity ID"/>
@@ -1651,7 +1651,8 @@
comment="Link Media value to Product entity table">
-
+
+ comment="Entity ID"/>
@@ -39,7 +39,7 @@
+ comment="Rule ID"/>
-
+
@@ -177,7 +179,7 @@
+ comment="Rule ID"/>
+ comment="Rule ID"/>
categoryUrlRewriteGeneratorMock = $this->createMock(CategoryUrlRewriteGenerator::class);
+ $this->urlPersistMock = $this->createMock(UrlPersistInterface::class);
+ $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class);
+ $this->urlRewriteHandlerMock = $this->createMock(UrlRewriteHandler::class);
+ /** @var UrlRewriteBunchReplacer|\PHPUnit_Framework_MockObject_MockObject $urlRewriteMock */
+ $urlRewriteMock = $this->createMock(UrlRewriteBunchReplacer::class);
+ $this->databaseMapPoolMock = $this->createMock(DatabaseMapPool::class);
+
+ $this->observer = new CategoryProcessUrlRewriteMovingObserver(
+ $this->categoryUrlRewriteGeneratorMock,
+ $this->urlPersistMock,
+ $this->scopeConfigMock,
+ $this->urlRewriteHandlerMock,
+ $urlRewriteMock,
+ $this->databaseMapPoolMock,
+ [
+ DataCategoryUrlRewriteDatabaseMap::class,
+ DataProductUrlRewriteDatabaseMap::class
+ ]
+ );
+ }
+
+ /**
+ * Test category process rewrite url by changing the parent
+ *
+ * @return void
+ */
+ public function testCategoryProcessUrlRewriteAfterMovingWithChangedParentId()
+ {
+ /** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */
+ $observerMock = $this->createMock(Observer::class);
+ $eventMock = $this->getMockBuilder(Event::class)
+ ->disableOriginalConstructor()
+ ->setMethods(['getCategory'])
+ ->getMock();
+ $categoryMock = $this->createPartialMock(Category::class, [
+ 'dataHasChangedFor',
+ 'getEntityId',
+ 'getStoreId',
+ 'setData'
+ ]);
+
+ $categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id')
+ ->willReturn(true);
+ $eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock);
+ $observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
+ $this->scopeConfigMock->expects($this->once())->method('isSetFlag')
+ ->with(UrlKeyRenderer::XML_PATH_SEO_SAVE_HISTORY)->willReturn(true);
+ $this->categoryUrlRewriteGeneratorMock->expects($this->once())->method('generate')
+ ->with($categoryMock, true)->willReturn(['category-url-rewrite']);
+ $this->urlRewriteHandlerMock->expects($this->once())->method('generateProductUrlRewrites')
+ ->with($categoryMock)->willReturn(['product-url-rewrite']);
+ $this->databaseMapPoolMock->expects($this->exactly(2))->method('resetMap')->willReturnSelf();
+
+ $this->observer->execute($observerMock);
+ }
+
+ /**
+ * Test category process rewrite url without changing the parent
+ *
+ * @return void
+ */
+ public function testCategoryProcessUrlRewriteAfterMovingWithinNotChangedParent()
+ {
+ /** @var Observer|\PHPUnit_Framework_MockObject_MockObject $observerMock */
+ $observerMock = $this->createMock(Observer::class);
+ $eventMock = $this->getMockBuilder(Event::class)
+ ->disableOriginalConstructor()
+ ->setMethods(['getCategory'])
+ ->getMock();
+ $categoryMock = $this->createPartialMock(Category::class, ['dataHasChangedFor']);
+ $observerMock->expects($this->once())->method('getEvent')->willReturn($eventMock);
+ $eventMock->expects($this->once())->method('getCategory')->willReturn($categoryMock);
+ $categoryMock->expects($this->once())->method('dataHasChangedFor')->with('parent_id')
+ ->willReturn(false);
+
+ $this->observer->execute($observerMock);
+ }
+}
diff --git a/app/code/Magento/Cms/etc/db_schema.xml b/app/code/Magento/Cms/etc/db_schema.xml
index 2b825544f56f1..3f97a94d54943 100644
--- a/app/code/Magento/Cms/etc/db_schema.xml
+++ b/app/code/Magento/Cms/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
@@ -46,7 +46,7 @@
+ comment="Entity ID"/>
@@ -86,7 +86,8 @@
-
+
diff --git a/app/code/Magento/Customer/etc/db_schema.xml b/app/code/Magento/Customer/etc/db_schema.xml
index 368ca417432fd..657083b58e1b1 100644
--- a/app/code/Magento/Customer/etc/db_schema.xml
+++ b/app/code/Magento/Customer/etc/db_schema.xml
@@ -9,15 +9,15 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
+ comment="Website ID"/>
+ default="0" comment="Group ID"/>
+ default="0" comment="Store ID"/>
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ default="0" comment="Entity ID"/>
@@ -159,7 +159,7 @@
+ default="0" comment="Entity ID"/>
@@ -186,11 +186,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -218,11 +218,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -244,11 +244,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -274,11 +274,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -304,11 +304,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -335,11 +335,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -366,11 +366,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
@@ -391,11 +391,11 @@
+ comment="Value ID"/>
+ default="0" comment="Attribute ID"/>
+ default="0" comment="Entity ID"/>
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/OptionManagement.php b/app/code/Magento/Eav/Model/Entity/Attribute/OptionManagement.php
index a2c9611d26f5d..4e4e146208a47 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/OptionManagement.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/OptionManagement.php
@@ -10,6 +10,9 @@
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Exception\StateException;
+/**
+ * Eav Option Management
+ */
class OptionManagement implements \Magento\Eav\Api\AttributeOptionManagementInterface
{
/**
@@ -36,7 +39,7 @@ public function __construct(
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function add($entityType, $attributeCode, $option)
{
@@ -79,7 +82,7 @@ public function add($entityType, $attributeCode, $option)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function delete($entityType, $attributeCode, $optionId)
{
@@ -110,7 +113,7 @@ public function delete($entityType, $attributeCode, $optionId)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getItems($entityType, $attributeCode)
{
@@ -129,6 +132,8 @@ public function getItems($entityType, $attributeCode)
}
/**
+ * Validate option
+ *
* @param \Magento\Eav\Api\Data\AttributeInterface $attribute
* @param int $optionId
* @throws NoSuchEntityException
@@ -148,15 +153,19 @@ protected function validateOption($attribute, $optionId)
}
/**
+ * Returns option id
+ *
* @param \Magento\Eav\Api\Data\AttributeOptionInterface $option
* @return string
*/
private function getOptionId(\Magento\Eav\Api\Data\AttributeOptionInterface $option) : string
{
- return $option->getValue() ?: 'new_option';
+ return 'id_' . ($option->getValue() ?: 'new_option');
}
/**
+ * Set option value
+ *
* @param \Magento\Eav\Api\Data\AttributeOptionInterface $option
* @param \Magento\Eav\Api\Data\AttributeInterface $attribute
* @param string $optionLabel
diff --git a/app/code/Magento/Eav/Test/Unit/Model/Entity/Attribute/OptionManagementTest.php b/app/code/Magento/Eav/Test/Unit/Model/Entity/Attribute/OptionManagementTest.php
index 2ae31a05d957f..b63a4dd2c9ae6 100644
--- a/app/code/Magento/Eav/Test/Unit/Model/Entity/Attribute/OptionManagementTest.php
+++ b/app/code/Magento/Eav/Test/Unit/Model/Entity/Attribute/OptionManagementTest.php
@@ -59,13 +59,13 @@ public function testAdd()
$labelMock = $this->createMock(\Magento\Eav\Api\Data\AttributeOptionLabelInterface::class);
$option =
['value' => [
- 'new_option' => [
+ 'id_new_option' => [
0 => 'optionLabel',
42 => 'labelLabel',
],
],
'order' => [
- 'new_option' => 'optionSortOrder',
+ 'id_new_option' => 'optionSortOrder',
],
];
@@ -78,10 +78,10 @@ public function testAdd()
$labelMock->expects($this->once())->method('getStoreId')->willReturn(42);
$labelMock->expects($this->once())->method('getLabel')->willReturn('labelLabel');
$optionMock->expects($this->once())->method('getIsDefault')->willReturn(true);
- $attributeMock->expects($this->once())->method('setDefault')->with(['new_option']);
+ $attributeMock->expects($this->once())->method('setDefault')->with(['id_new_option']);
$attributeMock->expects($this->once())->method('setOption')->with($option);
$this->resourceModelMock->expects($this->once())->method('save')->with($attributeMock);
- $this->assertEquals('new_option', $this->model->add($entityType, $attributeCode, $optionMock));
+ $this->assertEquals('id_new_option', $this->model->add($entityType, $attributeCode, $optionMock));
}
/**
@@ -167,13 +167,13 @@ public function testAddWithCannotSaveException()
$labelMock = $this->createMock(\Magento\Eav\Api\Data\AttributeOptionLabelInterface::class);
$option =
['value' => [
- 'new_option' => [
+ 'id_new_option' => [
0 => 'optionLabel',
42 => 'labelLabel',
],
],
'order' => [
- 'new_option' => 'optionSortOrder',
+ 'id_new_option' => 'optionSortOrder',
],
];
@@ -186,7 +186,7 @@ public function testAddWithCannotSaveException()
$labelMock->expects($this->once())->method('getStoreId')->willReturn(42);
$labelMock->expects($this->once())->method('getLabel')->willReturn('labelLabel');
$optionMock->expects($this->once())->method('getIsDefault')->willReturn(true);
- $attributeMock->expects($this->once())->method('setDefault')->with(['new_option']);
+ $attributeMock->expects($this->once())->method('setDefault')->with(['id_new_option']);
$attributeMock->expects($this->once())->method('setOption')->with($option);
$this->resourceModelMock->expects($this->once())->method('save')->with($attributeMock)
->willThrowException(new \Exception());
diff --git a/app/code/Magento/Eav/etc/db_schema.xml b/app/code/Magento/Eav/etc/db_schema.xml
index f930321e5259b..e81fad5ebded8 100644
--- a/app/code/Magento/Eav/etc/db_schema.xml
+++ b/app/code/Magento/Eav/etc/db_schema.xml
@@ -15,7 +15,7 @@
-
+
+ comment="Entity ID"/>
+ default="0" comment="Entity ID"/>
@@ -123,7 +123,7 @@
+ default="0" comment="Entity ID"/>
@@ -164,7 +164,7 @@
+ default="0" comment="Entity ID"/>
@@ -204,7 +204,7 @@
+ default="0" comment="Entity ID"/>
@@ -241,7 +241,7 @@
+ default="0" comment="Entity ID"/>
diff --git a/app/code/Magento/GroupedProduct/view/base/templates/product/price/final_price.phtml b/app/code/Magento/GroupedProduct/view/base/templates/product/price/final_price.phtml
index 34de1a18cf28a..d9238e9794d7e 100644
--- a/app/code/Magento/GroupedProduct/view/base/templates/product/price/final_price.phtml
+++ b/app/code/Magento/GroupedProduct/view/base/templates/product/price/final_price.phtml
@@ -26,7 +26,7 @@ if ($minProduct) {
);
}
?>
-
+
getZone()): ?>
= /* @escapeNotVerified */ __('Starting at') ?>= $amountRender->toHtml() ?>
diff --git a/app/code/Magento/Integration/etc/db_schema.xml b/app/code/Magento/Integration/etc/db_schema.xml
index 9e81b867d36d5..33173df4f6c0b 100644
--- a/app/code/Magento/Integration/etc/db_schema.xml
+++ b/app/code/Magento/Integration/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
+ comment="Entity ID"/>
@@ -35,9 +35,9 @@
+ comment="Entity ID"/>
+ comment="Customer ID"/>
+ comment="Entity ID"/>
+ comment="Entity ID"/>
getValue('business_account') && !$this->isWppApiAvailabe();
+ return $this->getValue('business_account') && !$this->isWppApiAvailable();
}
/**
* Check whether WPP API credentials are available for this method
*
+ * @deprecated
* @return bool
*/
public function isWppApiAvailabe()
+ {
+ return $this->isWppApiAvailable();
+ }
+
+ /**
+ * Check whether WPP API credentials are available for this method
+ *
+ * @return bool
+ */
+ public function isWppApiAvailable()
{
return $this->getValue('api_username')
&& $this->getValue('api_password')
@@ -243,7 +254,7 @@ public function isWppApiAvailabe()
/**
* Check whether method available for checkout or not
*
- * @param null $methodCode
+ * @param null|string $methodCode
*
* @return bool
*/
diff --git a/app/code/Magento/Paypal/Model/Config.php b/app/code/Magento/Paypal/Model/Config.php
index 34e40ac7509d6..b058ba129a33f 100644
--- a/app/code/Magento/Paypal/Model/Config.php
+++ b/app/code/Magento/Paypal/Model/Config.php
@@ -10,6 +10,7 @@
/**
* Config model that is aware of all \Magento\Paypal payment methods
+ *
* Works with PayPal-specific system configuration
* @SuppressWarnings(PHPMD.ExcessivePublicCount)
@@ -632,6 +633,7 @@ public function __construct(
/**
* Check whether method available for checkout or not
+ *
* Logic based on merchant country, methods dependence
*
* @param string|null $methodCode
@@ -677,7 +679,7 @@ public function isMethodAvailable($methodCode = null)
}
break;
case self::METHOD_BILLING_AGREEMENT:
- $result = $this->isWppApiAvailabe();
+ $result = $this->isWppApiAvailable();
break;
}
return $result;
@@ -723,6 +725,7 @@ public function getMerchantCountry()
/**
* Check whether method supported for specified country or not
+ *
* Use $_methodCode and merchant country by default
*
* @param string|null $method
@@ -896,6 +899,7 @@ public function getExpressCheckoutEditUrl($token)
/**
* Get url for additional actions that PayPal may require customer to do after placing the order.
+ *
* For instance, redirecting customer to bank for payment confirmation.
*
* @param string $token
@@ -957,6 +961,7 @@ public function areButtonsDynamic()
/**
* Express checkout shortcut pic URL getter
+ *
* PayPal will ignore "pal", if there is no total amount specified
*
* @param string $localeCode
@@ -996,6 +1001,7 @@ public function getExpressCheckoutInContextImageUrl($localeCode)
/**
* Get PayPal "mark" image URL
+ *
* Supposed to be used on payment methods selection
* $staticSize is applicable for static images only
*
@@ -1032,6 +1038,7 @@ public function getPaymentMarkImageUrl($localeCode, $orderTotal = null, $pal = n
/**
* Get "What Is PayPal" localized URL
+ *
* Supposed to be used with "mark" as popup window
*
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
@@ -1262,6 +1269,7 @@ public function getExpressCheckoutBASignupOptions()
/**
* Whether to ask customer to create billing agreements
+ *
* Unilateral payments are incompatible with the billing agreements
*
* @return bool
@@ -1376,6 +1384,7 @@ public function exportExpressCheckoutStyleSettings(\Magento\Framework\DataObject
/**
* Dynamic PayPal image URL getter
+ *
* Also can render dynamic Acceptance Mark
*
* @param string $type
@@ -1725,6 +1734,7 @@ public function getBmlPublisherId()
/**
* Get Display option from stored config
+ *
* @param string $section
*
* @return mixed
@@ -1752,6 +1762,7 @@ public function getBmlDisplay($section)
/**
* Get Position option from stored config
+ *
* @param string $section
*
* @return mixed
@@ -1767,6 +1778,7 @@ public function getBmlPosition($section)
/**
* Get Size option from stored config
+ *
* @param string $section
*
* @return mixed
diff --git a/app/code/Magento/Paypal/Test/Unit/Model/AbstractConfigTest.php b/app/code/Magento/Paypal/Test/Unit/Model/AbstractConfigTest.php
index 9ec9318212614..78bd269403b83 100644
--- a/app/code/Magento/Paypal/Test/Unit/Model/AbstractConfigTest.php
+++ b/app/code/Magento/Paypal/Test/Unit/Model/AbstractConfigTest.php
@@ -189,14 +189,14 @@ public function getValueDataProvider()
*
* @dataProvider isWppApiAvailabeDataProvider
*/
- public function testIsWppApiAvailabe($returnMap, $expectedValue)
+ public function testIsWppApiAvailable($returnMap, $expectedValue)
{
$this->config->setMethod('paypal_express');
$this->scopeConfigMock->expects($this->any())
->method('getValue')
->willReturnMap($returnMap);
- $this->assertEquals($expectedValue, $this->config->isWppApiAvailabe());
+ $this->assertEquals($expectedValue, $this->config->isWppApiAvailable());
}
/**
diff --git a/app/code/Magento/Paypal/etc/db_schema.xml b/app/code/Magento/Paypal/etc/db_schema.xml
index 2703ee4f5be30..0441231e64ac3 100644
--- a/app/code/Magento/Paypal/etc/db_schema.xml
+++ b/app/code/Magento/Paypal/etc/db_schema.xml
@@ -134,7 +134,7 @@
+ comment="Entity ID"/>
diff --git a/app/code/Magento/Quote/etc/db_schema.xml b/app/code/Magento/Quote/etc/db_schema.xml
index 3bd7122e65d7f..725825e976ad7 100644
--- a/app/code/Magento/Quote/etc/db_schema.xml
+++ b/app/code/Magento/Quote/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
+ comment="Entity ID"/>
diff --git a/app/code/Magento/Review/etc/db_schema.xml b/app/code/Magento/Review/etc/db_schema.xml
index 1a2ff588180ce..2ae43ea608eca 100644
--- a/app/code/Magento/Review/etc/db_schema.xml
+++ b/app/code/Magento/Review/etc/db_schema.xml
@@ -95,7 +95,7 @@
+ default="0" comment="Store ID"/>
@@ -108,9 +108,9 @@
+ comment="Review ID"/>
+ comment="Store ID"/>
@@ -125,7 +125,7 @@
+ comment="Entity ID"/>
@@ -136,9 +136,9 @@
+ comment="Rating ID"/>
+ default="0" comment="Entity ID"/>
diff --git a/app/code/Magento/Sales/etc/db_schema.xml b/app/code/Magento/Sales/etc/db_schema.xml
index 4b716e761094c..fda6e75cf00c6 100644
--- a/app/code/Magento/Sales/etc/db_schema.xml
+++ b/app/code/Magento/Sales/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
@@ -297,13 +297,13 @@
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Customer ID"/>
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Customer Address ID"/>
+ comment="Quote Address ID"/>
+ comment="Region ID"/>
+ comment="Customer ID"/>
@@ -431,9 +431,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Order ID"/>
+ comment="Customer ID"/>
+ comment="Shipping Address ID"/>
+ comment="Billing Address ID"/>
@@ -762,13 +762,13 @@
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Order ID"/>
@@ -837,9 +837,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Product ID"/>
+ comment="Order Item ID"/>
@@ -867,14 +867,14 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Order ID"/>
@@ -901,9 +901,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Order ID"/>
@@ -1136,9 +1136,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
+ comment="Store ID"/>
+ comment="Entity ID"/>
+ comment="Order ID"/>
@@ -1366,7 +1366,7 @@
comment="Base Grand Total"/>
+ comment="Store ID"/>
@@ -1438,9 +1438,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Product ID"/>
+ comment="Order Item ID"/>
@@ -1494,9 +1494,9 @@
+ comment="Entity ID"/>
+ comment="Parent ID"/>
+ comment="Entity ID"/>
@@ -60,7 +60,7 @@
+ comment="Rule ID"/>
@@ -117,7 +117,7 @@
+ comment="Rule ID"/>
+ comment="Rule ID"/>
@@ -163,7 +163,8 @@
-
+
diff --git a/app/code/Magento/Signifyd/etc/db_schema.xml b/app/code/Magento/Signifyd/etc/db_schema.xml
index 6a31eacbb45f5..6f41b883c71e1 100644
--- a/app/code/Magento/Signifyd/etc/db_schema.xml
+++ b/app/code/Magento/Signifyd/etc/db_schema.xml
@@ -37,6 +37,7 @@
diff --git a/app/code/Magento/Vault/etc/db_schema.xml b/app/code/Magento/Vault/etc/db_schema.xml
index ed1f2adba2142..e9645e211ae9b 100644
--- a/app/code/Magento/Vault/etc/db_schema.xml
+++ b/app/code/Magento/Vault/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity ID"/>
+ default="0" comment="Entity ID"/>
diff --git a/app/code/Magento/Wishlist/Block/AbstractBlock.php b/app/code/Magento/Wishlist/Block/AbstractBlock.php
index 8b4a8df1bf99f..bb8138fb87a3e 100644
--- a/app/code/Magento/Wishlist/Block/AbstractBlock.php
+++ b/app/code/Magento/Wishlist/Block/AbstractBlock.php
@@ -231,9 +231,21 @@ public function hasDescription($item)
* Retrieve formated Date
*
* @param string $date
+ * @deprecated
* @return string
*/
public function getFormatedDate($date)
+ {
+ return $this->getFormattedDate($date);
+ }
+
+ /**
+ * Retrieve formatted Date
+ *
+ * @param string $date
+ * @return string
+ */
+ public function getFormattedDate($date)
{
return $this->formatDate($date, \IntlDateFormatter::MEDIUM);
}
diff --git a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeOptionManagementInterfaceTest.php b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeOptionManagementInterfaceTest.php
index f9442d8b6499a..1d37ea9a2fc6d 100644
--- a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeOptionManagementInterfaceTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeOptionManagementInterfaceTest.php
@@ -111,6 +111,9 @@ public function addDataProvider()
'option_with_value_node_that_starts_with_a_number' => [
array_merge($optionPayload, [AttributeOptionInterface::VALUE => '123_some_text'])
],
+ 'option_with_value_node_that_is_a_number' => [
+ array_merge($optionPayload, [AttributeOptionInterface::VALUE => '123'])
+ ],
];
}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php b/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php
index bfe8264d7cce6..211b28617cbe2 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php
@@ -24,7 +24,7 @@ public function testRemove()
[
'command' => 'remove',
'packages' => ['magento/package-a', 'magento/package-b'],
- '--no-update' => true,
+ '--no-update-with-dependencies' => true,
]
);
$composerAppFactory->expects($this->once())
diff --git a/dev/tests/integration/testsuite/Magento/Sales/_files/order_list.php b/dev/tests/integration/testsuite/Magento/Sales/_files/order_list.php
index 43e98419798a8..7f14d8cf26056 100644
--- a/dev/tests/integration/testsuite/Magento/Sales/_files/order_list.php
+++ b/dev/tests/integration/testsuite/Magento/Sales/_files/order_list.php
@@ -5,13 +5,14 @@
*/
use Magento\Sales\Model\Order;
+use Magento\Sales\Api\OrderRepositoryInterface;
+use Magento\Sales\Model\Order\Address as OrderAddress;
require 'order.php';
/** @var Order $order */
-/** @var Order\Payment $payment */
-/** @var Order\Item $orderItem */
-/** @var Order\Address $billingAddress */
-/** @var Order\Address $shippingAddress */
+/** @var Order\Payment $payment */
+/** @var Order\Item $orderItem */
+/** @var array $addressData Data for creating addresses for the orders. */
$orders = [
[
'increment_id' => '100000002',
@@ -48,16 +49,30 @@
],
];
+/** @var OrderRepositoryInterface $orderRepository */
+$orderRepository = $objectManager->create(OrderRepositoryInterface::class);
/** @var array $orderData */
foreach ($orders as $orderData) {
/** @var $order \Magento\Sales\Model\Order */
$order = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
\Magento\Sales\Model\Order::class
);
+
+ // Reset addresses
+ /** @var Order\Address $billingAddress */
+ $billingAddress = $objectManager->create(OrderAddress::class, ['data' => $addressData]);
+ $billingAddress->setAddressType('billing');
+
+ $shippingAddress = clone $billingAddress;
+ $shippingAddress->setId(null)->setAddressType('shipping');
+
$order
->setData($orderData)
->addItem($orderItem)
+ ->setCustomerIsGuest(true)
+ ->setCustomerEmail('customer@null.com')
->setBillingAddress($billingAddress)
- ->setBillingAddress($shippingAddress)
- ->save();
+ ->setShippingAddress($shippingAddress);
+
+ $orderRepository->save($order);
}
diff --git a/lib/internal/Magento/Framework/Composer/Remove.php b/lib/internal/Magento/Framework/Composer/Remove.php
index b7a9a20333d86..b7cea7769a176 100644
--- a/lib/internal/Magento/Framework/Composer/Remove.php
+++ b/lib/internal/Magento/Framework/Composer/Remove.php
@@ -46,7 +46,7 @@ public function remove(array $packages)
[
'command' => 'remove',
'packages' => $packages,
- '--no-update' => true,
+ '--no-update-with-dependencies' => true,
]
);
}
diff --git a/lib/web/mage/validation.js b/lib/web/mage/validation.js
index 86dd5a3b03681..a577208894944 100644
--- a/lib/web/mage/validation.js
+++ b/lib/web/mage/validation.js
@@ -364,7 +364,7 @@
],
'time12h': [
function (value, element) {
- return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$/i.test(value);
+ return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\s[AP]M))$/i.test(value);
},
$.mage.__('Please enter a valid time, between 00:00 am and 12:00 pm')
],