Skip to content

Commit 628163b

Browse files
committed
Merge branch '2.4-develop' of https://github.com/magento-commerce/magento2ce into ACP2E-3373
2 parents 5af4ff7 + 6acfd6a commit 628163b

File tree

175 files changed

+2868
-24307
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

175 files changed

+2868
-24307
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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+
* Copyright 2024 Adobe
7+
* All Rights Reserved.
8+
*/
9+
-->
10+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
12+
<actionGroup name="AdminAddRestrictedRoleForGlobalSearchActionGroup" extends="AdminCreateRoleActionGroup">
13+
<remove keyForRemoval="navigateToNewRole"/>
14+
<remove keyForRemoval="waitForPageLoad1"/>
15+
<remove keyForRemoval="fillRoleName"/>
16+
<remove keyForRemoval="enterPassword"/>
17+
<remove keyForRemoval="clickRoleResourcesTab"/>
18+
<remove keyForRemoval="waitForScopeSelection"/>
19+
<remove keyForRemoval="clickSaveRoleButton"/>
20+
<remove keyForRemoval="waitForPageLoad2"/>
21+
<remove keyForRemoval="clickCheckbox"/>
22+
<scrollTo selector="{{AdminEditRoleInfoSection.blockName('restrictedRole')}}" x="0" y="-120" stepKey="scrollToResourceElement" after="selectResourceAccessCustom"/>
23+
<click stepKey="clickTFACheckbox" selector="{{AdminEditRoleInfoSection.checkboxByRole('Magento_TwoFactorAuth::tfa')}}" after="waitForTfaRole"/>
24+
</actionGroup>
25+
</actionGroups>

app/code/Magento/Backend/Test/Mftf/Test/AdminLoginWithRestrictPermissionTest.xml

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
/**
44
* Copyright © Magento, Inc. All rights reserved.
55
* See COPYING.txt for license details.
6+
* Copyright 2024 Adobe
7+
* All Rights Reserved.
68
*/
79
-->
810

@@ -17,8 +19,8 @@
1719
<severity value="MAJOR" />
1820
<description value="Check login with restrict role."/>
1921
<group value="login"/>
20-
<group value="pr_exclude"/>
2122
<group value="cloud"/>
23+
<group value="pr_exclude"/>
2224
</annotations>
2325

2426
<before>
@@ -29,7 +31,7 @@
2931
<argument name="restrictedRole" value="Global Search"/>
3032
</actionGroup>
3133
<actionGroup ref="AdminUserClickRoleResourceTabActionGroup" stepKey="switchToRoleResourceTab"/>
32-
<actionGroup ref="AdminAddRestrictedRoleActionGroup" stepKey="addRestrictedRoleStores">
34+
<actionGroup ref="AdminAddRestrictedRoleForGlobalSearchActionGroup" stepKey="addRestrictedRoleStores">
3335
<argument name="User" value="adminRole"/>
3436
<argument name="restrictedRole" value="Global Search"/>
3537
</actionGroup>

app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2024 Adobe
4+
* All Rights Reserved.
55
*/
66

77
/**
@@ -392,8 +392,7 @@ protected function _getNodeJson($node, $level = 0)
392392
$item['id'] = $node->getId();
393393
$item['store'] = (int)$this->getStore()->getId();
394394
$item['path'] = $node->getData('path');
395-
396-
$item['cls'] = 'folder ' . ($node->getIsActive() ? 'active-category' : 'no-active-category');
395+
$item['a_attr'] = ['class' => $node->getIsActive() ? 'active-category' : 'not-active-category'];
397396
//$item['allowDrop'] = ($level<3) ? true : false;
398397
$allowMove = $this->_isCategoryMoveable($node);
399398
$item['allowDrop'] = $allowMove;

app/code/Magento/Catalog/Model/CategoryRepository.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<?php
22
/**
3-
*
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
3+
* Copyright 2014 Adobe
4+
* All Rights Reserved.
65
*/
76

87
namespace Magento\Catalog\Model;
@@ -149,7 +148,7 @@ public function save(CategoryInterface $category)
149148
*/
150149
public function get($categoryId, $storeId = null)
151150
{
152-
$cacheKey = $storeId ?? 'all';
151+
$cacheKey = $storeId ?? $this->storeManager->getStore()->getId();
153152
if (!isset($this->instances[$categoryId][$cacheKey])) {
154153
/** @var Category $category */
155154
$category = $this->categoryFactory->create();
@@ -231,7 +230,7 @@ protected function validateCategory(Category $category)
231230
* Lazy loader for the converter.
232231
*
233232
* @return ExtensibleDataObjectConverter
234-
*
233+
* phpcs:disable Magento2.Annotation.MethodAnnotationStructure
235234
* @deprecated 101.0.0
236235
* @see we don't recommend this approach anymore
237236
*/

app/code/Magento/Catalog/Model/ResourceModel/Category.php

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2011 Adobe
4+
* All Rights Reserved.
55
*/
66

77
/**
@@ -37,8 +37,6 @@ class Category extends AbstractResource implements ResetAfterRequestInterface
3737
protected $_tree;
3838

3939
/**
40-
* Catalog products table name
41-
*
4240
* @var string
4341
*/
4442
protected $_categoryProductTable;
@@ -49,15 +47,11 @@ class Category extends AbstractResource implements ResetAfterRequestInterface
4947
private $entitiesWhereAttributesIs;
5048

5149
/**
52-
* Id of 'is_active' category attribute
53-
*
5450
* @var int
5551
*/
5652
protected $_isActiveAttributeId = null;
5753

5854
/**
59-
* Id of store
60-
*
6155
* @var int
6256
*/
6357
protected $_storeId = null;
@@ -455,7 +449,7 @@ protected function _saveCategoryProducts($category)
455449
'position' => (int)$position,
456450
];
457451
}
458-
$connection->insertMultiple($this->getCategoryProductTable(), $data);
452+
$connection->insertOnDuplicate($this->getCategoryProductTable(), $data, ['position']);
459453
}
460454

461455
/**

app/code/Magento/CatalogCustomerGraphQl/Model/Resolver/PriceTiers.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2019 Adobe
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

@@ -182,7 +182,7 @@ private function formatTierPrices(float $productPrice, string $currencyCode, $ti
182182
"discount" => $discount,
183183
"quantity" => $tierPrice->getQty(),
184184
"final_price" => [
185-
"value" => $tierPrice->getValue() * $tierPrice->getQty(),
185+
"value" => $tierPrice->getValue(),
186186
"currency" => $currencyCode
187187
]
188188
];

app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2011 Adobe
4+
* All Rights Reserved.
55
*/
66

77
namespace Magento\CatalogSearch\Model\Indexer;
@@ -123,7 +123,7 @@ public function __construct(
123123
IndexSwitcherInterface $indexSwitcher,
124124
StateFactory $indexScopeStateFactory,
125125
DimensionProviderInterface $dimensionProvider,
126-
array $data,
126+
array $data = [],
127127
ProcessManager $processManager = null,
128128
?int $batchSize = null,
129129
?DeploymentConfig $deploymentConfig = null

app/code/Magento/Checkout/Test/Mftf/ActionGroup/ClickPlaceOrderActionGroup.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88

@@ -13,7 +13,7 @@
1313
<description>Clicks on the 'Place Order' button. Validates that the Success Message is present and correct.</description>
1414
</annotations>
1515

16-
<waitForElement selector="{{CheckoutPaymentSection.placeOrder}}" time="30" stepKey="waitForPlaceOrderButton"/>
16+
<waitForElementClickable selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="waitForPlaceOrderButton"/>
1717
<click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/>
1818
<waitForPageLoad stepKey="waitForCheckout"/>
1919
<waitForText selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/>

app/code/Magento/Checkout/Test/Mftf/Section/CheckoutShippingMethodsSection.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88

@@ -36,6 +36,6 @@
3636
<element name="shippingMethodDhlMedicalExpress" type="radio" selector="#checkout-shipping-method-load input[value='dhl_Q']"/>
3737
<element name="shippingMethodFreeShippingLabel" type="text" selector="#label_carrier_freeshipping_freeshipping"/>
3838
<element name="shippingDHLErrorMessage" type="text" selector="#checkout-shipping-method-load .table-checkout-shipping-method tr.row-error .error div"/>
39-
<element name="smartPostShippingMethod" type="radio" selector="#checkout-shipping-method-load input[value='fedex_FEDEX_GROUND']"/>
39+
<element name="smartPostShippingMethod" type="radio" selector="#checkout-shipping-method-load input[value='fedex_SMART_POST']"/>
4040
</section>
4141
</sections>

app/code/Magento/Checkout/Test/Mftf/Test/StorefrontCashOnDeliveryPaymentForSpecificCountryTest.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88

@@ -18,7 +18,6 @@
1818
<testCaseId value="AC-3216"/>
1919
<useCaseId value="ACP2E-862"/>
2020
<group value="checkout"/>
21-
<!--Will be fixed in the scope of -->
2221
<group value="pr_exclude"/>
2322
</annotations>
2423
<before>
@@ -65,6 +64,7 @@
6564

6665
<!-- Select Shipping Method-->
6766
<actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatRateShippingMethod"/>
67+
<actionGroup ref="CheckoutSelectCheckMoneyOrderPaymentActionGroup" stepKey="selectPaymentMethod"/>
6868
<!--Click next button to open payment section-->
6969
<actionGroup ref="StorefrontGuestCheckoutProceedToPaymentStepActionGroup" stepKey="clickNext"/>
7070

app/code/Magento/CheckoutAgreements/Test/Mftf/Section/StorefrontCheckoutAgreementsSection.xml

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
33
/**
4-
* Copyright © Magento, Inc. All rights reserved.
5-
* See COPYING.txt for license details.
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
66
*/
77
-->
88

@@ -19,5 +19,7 @@
1919
<element name="contentArea" type="text" selector="//div[@class='modals-wrapper']//aside[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//div[@class='checkout-agreements-item-content' and contains(text(), '{{contentText}}')]" parameterized="true"/>
2020
<element name="manualCheckoutAgreementLink" type="button" selector="//input[starts-with(@id,'{{paymentName}}')]/..//label//span" parameterized="true"/>
2121
<element name="automaticCheckoutAgreementLink" type="button" selector="//input[starts-with(@id,'{{paymentName}}')]/..//following-sibling::div//button//span" parameterized="true"/>
22+
<element name="checkoutAgreement" type="button" selector="(//*[@class='checkout-agreements fieldset']//button/span[text()='{{agreement}}'])[4]" parameterized="true"/>
23+
<element name="checkoutAgreementContent" type="button" selector=".//*[@class='modal-popup agreements-modal modal-slide _inner-scroll _show']//div[@class='checkout-agreements-item-content']"/>
2224
</section>
2325
</sections>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
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="StorefrontSeveralTermsAndConditionsWithDifferentTypesArePresentedOnPayflowLinkReviewPageTest">
11+
<annotations>
12+
<features value="PayPal"/>
13+
<stories value="Paypal payflow link"/>
14+
<title value="Several Terms and Conditions with different types are presented on Payflow Link review page"/>
15+
<description value="Admin creates several terms and conditions with different types and assert them on the payment type payflow link in the storefront's review and payments page"/>
16+
<severity value="MAJOR"/>
17+
<testCaseId value="AC-5204"/>
18+
<group value="pr_exclude"/>
19+
</annotations>
20+
<before>
21+
<!-- Enable Terms And Condition-->
22+
<magentoCLI command="config:set checkout/options/enable_agreements 1" stepKey="setEnableTermsOnCheckout"/>
23+
<!--Create a simple product-->
24+
<createData entity="SimpleProduct" stepKey="createSimpleProduct"/>
25+
<!--Create a US Customer-->
26+
<createData entity="Simple_US_Customer" stepKey="createCustomer"/>
27+
<!--Login to admin-->
28+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
29+
<!--Create terms and conditions-->
30+
<actionGroup ref="AdminTermsConditionsOpenNewTermPageActionGroup" stepKey="openNewTerm"/>
31+
<actionGroup ref="AdminTermsConditionsFillTermEditFormActionGroup" stepKey="fillNewTerm">
32+
<argument name="term" value="newHtmlTerm"/>
33+
</actionGroup>
34+
<actionGroup ref="AdminTermsConditionsSaveTermActionGroup" stepKey="saveNewTerm"/>
35+
<actionGroup ref="AdminTermsConditionsOpenNewTermPageActionGroup" stepKey="openNewHTMLTerm"/>
36+
<actionGroup ref="AdminTermsConditionsFillTermEditFormActionGroup" stepKey="fillNewHTMLTerm">
37+
<argument name="term" value="newHtmlAutomaticallyTerm"/>
38+
</actionGroup>
39+
<actionGroup ref="AdminTermsConditionsSaveTermActionGroup" stepKey="saveNewHTMLTerm"/>
40+
<!--Clear cache and reindex-->
41+
<actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex">
42+
<argument name="indices" value=""/>
43+
</actionGroup>
44+
<actionGroup ref="CliCacheCleanActionGroup" stepKey="cleanCache">
45+
<argument name="tags" value="config full_page"/>
46+
</actionGroup>
47+
</before>
48+
<after>
49+
<!--Admin delete terms and condition-->
50+
<actionGroup ref="AdminTermsConditionsOpenGridActionGroup" stepKey="openTermsGridToDelete"/>
51+
<actionGroup ref="AdminDeleteAllTermConditionsActionGroup" stepKey="deleteAllTerms"/>
52+
<!--Delete created product-->
53+
<deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/>
54+
<!-- Delete created customer -->
55+
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
56+
<!--Logout-->
57+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
58+
</after>
59+
<!--Login to storefront and open created simple product-->
60+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="customerLogin">
61+
<argument name="Customer" value="$createCustomer$" />
62+
</actionGroup>
63+
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront">
64+
<argument name="product" value="$$createSimpleProduct$$"/>
65+
</actionGroup>
66+
<!-- Add product to cart and then select shipping method on checkout page-->
67+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage">
68+
<argument name="productName" value="$createSimpleProduct.name$"/>
69+
</actionGroup>
70+
<actionGroup ref="StorefrontCartPageOpenActionGroup" stepKey="goToCheckoutCartPage"/>
71+
<actionGroup ref="StorefrontClickProceedToCheckoutActionGroup" stepKey="clickProceedToCheckout"/>
72+
<actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="selectFlatrate">
73+
<argument name="shippingMethodName" value="Flat Rate"/>
74+
</actionGroup>
75+
<actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="clickNextOnShippingStep"/>
76+
<!--Assert the created terms and conditions-->
77+
<waitForText selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreementLink('Credit Card (Payflow Link)')}}" userInput="{{newHtmlTerm.checkboxText}}" after="selectCreditCardPaymentMethod" stepKey="seeTermInCheckout"/>
78+
<waitForElementClickable selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreement(newHtmlAutomaticallyTerm.checkboxText)}}" stepKey="waitToClickOnHTMLTerm"/>
79+
<click selector="{{StorefrontCheckoutAgreementsSection.checkoutAgreement(newHtmlAutomaticallyTerm.checkboxText)}}" stepKey="clickOnHTMLTerm"/>
80+
<waitForElement selector="{{StorefrontCheckoutAgreementsSection.contentArea(newHtmlAutomaticallyTerm.content)}}" stepKey="verifyAutomaticTermContentTextMessage"/>
81+
</test>
82+
</tests>

app/code/Magento/Config/Model/Config/Backend/Baseurl.php

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2024 Adobe.
4+
* All Rights Reserved.
55
*/
66
namespace Magento\Config\Model\Config\Backend;
77

8-
use Magento\Framework\Validator\Url as UrlValidator;
98
use Magento\Framework\App\ObjectManager;
9+
use Magento\Framework\Validator\Url as UrlValidator;
1010

1111
/**
1212
* @api
@@ -56,7 +56,7 @@ public function __construct(
5656
*/
5757
public function beforeSave()
5858
{
59-
$value = $this->getValue();
59+
$value = strtolower($this->getValue());
6060
try {
6161
if (!$this->_validateUnsecure($value) && !$this->_validateSecure($value)) {
6262
$this->_validateFullyQualifiedUrl($value);
@@ -68,6 +68,7 @@ public function beforeSave()
6868
$error = new \Magento\Framework\Exception\LocalizedException($msg, $e);
6969
throw $error;
7070
}
71+
$this->setValue($value);
7172
}
7273

7374
/**
@@ -232,6 +233,7 @@ public function afterSave()
232233
* Get URL Validator
233234
*
234235
* @deprecated 100.1.12
236+
* @see Nothing
235237
* @return UrlValidator
236238
*/
237239
private function getUrlValidator()

0 commit comments

Comments
 (0)