Skip to content

Commit 26f24cb

Browse files
authored
Merge branch '2.4-develop' into functional-mainline-deployment
2 parents f28343e + ab0c0b5 commit 26f24cb

File tree

102 files changed

+22910
-22184
lines changed

Some content is hidden

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

102 files changed

+22910
-22184
lines changed

app/code/Magento/Catalog/Test/Mftf/Test/StorefrontCategorySidebarMobileMenuTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<click selector="{{StorefrontHeaderSection.mobileMenuToggle}}" stepKey="openSideMenu"/>
4343
<waitForElementClickable selector="{{StorefrontHeaderSection.NavigationCategoryByName($$createParentCategory.name$$)}}" stepKey="waitForCategoryMenuClickable" />
4444
<click selector="{{StorefrontHeaderSection.NavigationCategoryByName($$createParentCategory.name$$)}}" stepKey="expandCategoryMenu"/>
45+
<waitForPageLoad stepKey="waitForSearchResult"/>
4546

4647
<!-- Assert the category expanded successfully -->
4748
<actionGroup ref="StorefrontAssertCategoryNameIsShownInMenuActionGroup" stepKey="verifySubCatMenuItemIsVisibleInTheSidebar">
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\CatalogSearch\Observer;
9+
10+
use Magento\Catalog\Model\Product\ProductList\ToolbarMemorizer;
11+
use Magento\Framework\Event\Observer;
12+
use Magento\Framework\Event\ObserverInterface;
13+
14+
class ToolbarMemorizerObserver implements ObserverInterface
15+
{
16+
/**
17+
* @var ToolbarMemorizer
18+
*/
19+
private $toolbarMemorizer;
20+
21+
/**
22+
* ToolbarMemoriserObserver constructor.
23+
* @param ToolbarMemorizer $toolbarMemorizer
24+
*/
25+
public function __construct(ToolbarMemorizer $toolbarMemorizer)
26+
{
27+
$this->toolbarMemorizer = $toolbarMemorizer;
28+
}
29+
30+
/**
31+
* Save toolbar parameters in catalog session
32+
*
33+
* @param Observer $observer
34+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
35+
*/
36+
public function execute(Observer $observer): void
37+
{
38+
$this->toolbarMemorizer->memorizeParams();
39+
}
40+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
9+
<event name="controller_action_predispatch_catalogsearch_advanced_result">
10+
<observer name="catalog_sort_param_memorization" instance="Magento\CatalogSearch\Observer\ToolbarMemorizerObserver"/>
11+
</event>
12+
<event name="controller_action_predispatch_catalogsearch_result_index">
13+
<observer name="catalog_sort_param_memorization" instance="Magento\CatalogSearch\Observer\ToolbarMemorizerObserver"/>
14+
</event>
15+
</config>

app/code/Magento/Cms/Test/Mftf/ActionGroup/DeleteImageFromStorageActionGroup.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
<arguments>
1616
<argument name="Image"/>
1717
</arguments>
18-
18+
1919
<waitForElementVisible selector="{{MediaGallerySection.imageOrImageCopy(Image.fileName, Image.extension)}}" stepKey="waitForInitialImages"/>
2020
<grabMultiple selector="{{MediaGallerySection.imageOrImageCopy(Image.fileName, Image.extension)}}" stepKey="initialImages"/>
2121
<waitForElementVisible selector="{{MediaGallerySection.lastImageOrImageCopy(Image.fileName, Image.extension)}}" stepKey="waitForLastImage"/>
22-
<click selector="{{MediaGallerySection.lastImageOrImageCopy(Image.fileName, Image.extension)}}" stepKey="selectImage"/>
22+
<conditionalClick selector="{{MediaGallerySection.lastImageOrImageCopy(Image.fileName, Image.extension)}}" dependentSelector="{{MediaGallerySection.DeleteSelectedBtn}}" visible="false" stepKey="selectImage"/>
2323
<waitForElementVisible selector="{{MediaGallerySection.DeleteSelectedBtn}}" stepKey="waitForDeleteBtn"/>
2424
<click selector="{{MediaGallerySection.DeleteSelectedBtn}}" stepKey="clickDeleteSelected"/>
2525
<waitForPageLoad stepKey="waitForPageLoad1"/>
@@ -28,7 +28,7 @@
2828
<waitForPageLoad stepKey="waitForPageLoad2"/>
2929
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear"/>
3030
<grabMultiple selector="{{MediaGallerySection.imageOrImageCopy(Image.fileName, Image.extension)}}" stepKey="newImages"/>
31-
31+
3232
<assertLessThan stepKey="assertLessImages">
3333
<expectedResult type="variable">initialImages</expectedResult>
3434
<actualResult type="variable">newImages</actualResult>

app/code/Magento/Customer/Test/Unit/Model/StoreSwitcher/RedirectDataPostprocessorTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public function testProcessShouldNotLoginCustomerIfNotRegisteredInTargetStore():
118118

119119
public function testProcessShouldThrowExceptionIfCustomerDoesNotExist(): void
120120
{
121-
$this->expectErrorMessage('Something went wrong.');
121+
$this->expectExceptionMessage('Something went wrong.');
122122
$data = ['customer_id' => 1];
123123
$this->session->expects($this->never())
124124
->method('setCustomerDataAsLoggedIn');
@@ -127,7 +127,7 @@ public function testProcessShouldThrowExceptionIfCustomerDoesNotExist(): void
127127

128128
public function testProcessShouldThrowExceptionIfAnErrorOccur(): void
129129
{
130-
$this->expectErrorMessage('Something went wrong.');
130+
$this->expectExceptionMessage('Something went wrong.');
131131
$data = ['customer_id' => 2];
132132
$this->session->expects($this->never())
133133
->method('setCustomerDataAsLoggedIn');

app/code/Magento/MediaGalleryUi/Test/Mftf/Test/UserDeletesFolderFromMediaGalleryTest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="unselectFoldersToVerifyDeleteFolderButtonStatus">
6060
<argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
6161
</actionGroup>
62+
<waitForPageLoad stepKey="waitForSearchResult" time="10"/>
63+
<conditionalClick selector="{{AdminMediaGalleryFolderSection.clearFilterFolderName}}" dependentSelector="{{AdminMediaGalleryFolderSection.clearFilterFolderName}}" visible="true" stepKey="clearAllFiltersIfAny"/>
6264
<seeElement selector="{{AdminMediaGalleryFolderSection.disabledDeleteFolderButton}}" stepKey="DeleteFolderButtonIsDisabled"/>
6365

6466
<!-- Step4.2 Delete Folder is enabled post selecting folder -->
@@ -72,6 +74,7 @@
7274
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="deselectWysiwygFolder">
7375
<argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
7476
</actionGroup>
77+
<conditionalClick selector="{{AdminMediaGalleryFolderSection.clearFilterFolderName}}" dependentSelector="{{AdminMediaGalleryFolderSection.clearFilterFolderName}}" visible="true" stepKey="clearAllFiltersIfAny2"/>
7578
<seeElement selector="{{AdminMediaGalleryFolderSection.disabledDeleteFolderButton}}" stepKey="DeleteFolderButtonIsNowDisabledAgain"/>
7679

7780
<!-- Step5 Select folder to delete -->
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\OrderCancellation\Block\Adminhtml\Form\Field;
9+
10+
use Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray;
11+
12+
class Reasons extends AbstractFieldArray
13+
{
14+
/**
15+
* Prepare rendering the new field by adding all the needed columns
16+
*/
17+
protected function _prepareToRender()
18+
{
19+
$this->addColumn('reason', ['label' => __('Reason'), 'class' => 'required-entry']);
20+
$this->_addAfter = false;
21+
$this->_addButtonLabel = __('Add Reason');
22+
}
23+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\OrderCancellation\Model\Config\Backend;
9+
10+
use Magento\Config\Model\Config\Backend\Serialized;
11+
use Magento\Framework\Exception\LocalizedException;
12+
13+
class Reasons extends Serialized
14+
{
15+
/**
16+
* Processing object before save data
17+
*
18+
* @return $this
19+
* @throws LocalizedException
20+
*/
21+
public function beforeSave()
22+
{
23+
$value = $this->getValue();
24+
if (is_array($value)) {
25+
unset($value['__empty']);
26+
27+
if (empty($value)) {
28+
throw new LocalizedException(
29+
__('At least one reason value is required')
30+
);
31+
}
32+
}
33+
$this->setValue($value);
34+
return parent::beforeSave();
35+
}
36+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Magento_OrderCancellation module
2+
3+
This module allows to cancel an order and specify the order cancellation reason. Only orders in `RECEIVED`, `PENDING` or `PROCESSING` statuses can be cancelled and if the customer has paid for the order a refund is processed.
4+
5+
This functionality is enabled / disabled by a feature flag that is set at storeView level.
6+
7+
After the cancellation, the customer receive an email confirming it and this cancellation is reflected in the customer's order history.
8+
9+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
9+
<page name="AdminOrderCancellationConfigPage" url="admin/system_config/edit/section/sales/" area="admin" module="Magento_OrderCancellationGraphQl">
10+
<section name="AdminOrderCancellationConfigSection"/>
11+
</page>
12+
</pages>

0 commit comments

Comments
 (0)