Skip to content

Commit a934a1b

Browse files
committed
Merge remote-tracking branch 'origin/MC-39953' into 2.4-develop-pr127
2 parents 6e57300 + 37fc34c commit a934a1b

File tree

6 files changed

+132
-4
lines changed

6 files changed

+132
-4
lines changed

app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ public function execute()
8383
/** @var \Magento\Cms\Model\Page $page */
8484
$page = $this->pageRepository->getById($pageId);
8585
try {
86-
$pageData = $this->filterPost($postItems[$pageId]);
87-
$this->validatePost($pageData, $page, $error, $messages);
8886
$extendedPageData = $page->getData();
87+
$pageData = $this->filterPostWithDateConverting($postItems[$pageId], $extendedPageData);
88+
$this->validatePost($pageData, $page, $error, $messages);
8989
$this->setCmsPageData($page, $extendedPageData, $pageData);
9090
$this->pageRepository->save($page);
9191
} catch (\Magento\Framework\Exception\LocalizedException $e) {
@@ -127,6 +127,34 @@ protected function filterPost($postData = [])
127127
return $pageData;
128128
}
129129

130+
/**
131+
* Filtering posted data with converting custom theme dates to proper format
132+
*
133+
* @param array $postData
134+
* @param array $pageData
135+
* @return array
136+
*/
137+
private function filterPostWithDateConverting($postData = [], $pageData = [])
138+
{
139+
$newPageData = $this->filterPost($postData);
140+
if (
141+
!empty($newPageData['custom_theme_from'])
142+
&& date("Y-m-d", strtotime($postData['custom_theme_from']))
143+
=== date("Y-m-d", strtotime($pageData['custom_theme_from']))
144+
) {
145+
$newPageData['custom_theme_from'] = date("Y-m-d", strtotime($postData['custom_theme_from']));
146+
}
147+
if (
148+
!empty($newPageData['custom_theme_to'])
149+
&& date("Y-m-d", strtotime($postData['custom_theme_to']))
150+
=== date("Y-m-d", strtotime($pageData['custom_theme_to']))
151+
) {
152+
$newPageData['custom_theme_to'] = date("Y-m-d", strtotime($postData['custom_theme_to']));
153+
}
154+
155+
return $newPageData;
156+
}
157+
130158
/**
131159
* Validate post data
132160
*

app/code/Magento/Cms/Test/Mftf/Page/CmsPagesPage.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
1111
<page name="CmsPagesPage" url="/cms/page" area="admin" module="Magento_Cms">
1212
<section name="CmsPagesPageActionsSection"/>
13+
<section name="AdminCmsPageGridInlineEditSection"/>
1314
</page>
1415
</pages>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
10+
<section name="AdminCmsPageGridInlineEditSection">
11+
<element name="customDesignFrom" type="input" selector="tr.data-grid-editable-row:not([style*='display: none']) [name='custom_theme_from']"/>
12+
<element name="customDesignTo" type="input" selector="tr.data-grid-editable-row:not([style*='display: none']) [name='custom_theme_to']"/>
13+
<element name="customLayout" type="input" selector="tr.data-grid-editable-row:not([style*='display: none']) [name='page_layout']"/>
14+
<element name="savePageButton" type="button" selector="tr.data-grid-editable-row-actions button.action-primary" timeout="30"/>
15+
</section>
16+
</sections>

app/code/Magento/Cms/Test/Mftf/Section/CmsNewPagePageContentSection/CmsDesignSection.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
1010
<section name="CmsDesignSection">
1111
<element name="DesignTab" type="button" selector="//strong[@class='admin__collapsible-title']//span[text()='Design']"/>
12+
<element name="customDesignUpdateTab" type="button" selector="//strong[@class='admin__collapsible-title']//span[text()='Custom Design Update']"/>
13+
<element name="customDesignFrom" type="input" selector="input[name='custom_theme_from']"/>
14+
<element name="customDesignTo" type="input" selector="input[name='custom_theme_to']"/>
15+
<element name="customTheme" type="select" selector="//div[@data-index='custom_design_update']//select[@name='custom_theme']"/>
1216
<element name="LayoutDropdown" type="select" selector="select[name='page_layout']"/>
1317
</section>
1418
</sections>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
<element name="clearFilters" type="button" selector=".admin__data-grid-header button[data-action='grid-filter-reset']" timeout="30"/>
2323
<element name="activeFilters" type="button" selector="//div[@class='admin__data-grid-header']//span[contains(text(), 'Active filters:')]" />
2424
<element name="spinner" type="input" selector='//div[@data-component="cms_page_listing.cms_page_listing.cms_page_columns"]'/>
25-
<element name="firstItemSelectButton" type="button" selector=".data-grid .action-select-wrap button.action-select"/>
26-
<element name="firstItemEditButton" type="button" selector=".data-grid .action-select-wrap .action-menu-item[data-action~='item-edit']"/>
25+
<element name="firstItemSelectButton" type="button" selector=".data-grid .action-select-wrap button.action-select" timeout="30"/>
26+
<element name="firstItemEditButton" type="button" selector=".data-grid .action-select-wrap .action-menu-item[data-action~='item-edit']" timeout="30"/>
2727
<element name="activeFilter" type="button" selector="(//div[contains(@class, 'admin__data-grid-filters-current') and contains(@class, '_show')])[1]"/>
2828
<element name="savePageSuccessMessage" type="text" selector=".message-success"/>
2929
<element name="savePageWarningMessage" type="text" selector=".message-warning"/>
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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="AdminCMSPageInlineEditTest">
11+
<annotations>
12+
<features value="Cms"/>
13+
<stories value="Inline Edit Cms Page"/>
14+
<title value="Inline changing CMS page custom theme will be applied with proper dates"/>
15+
<description value="Verify that Merchant can inline edit CMS pages in grid and dates will be proper"/>
16+
<severity value="MAJOR"/>
17+
<testCaseId value="MC-40900" />
18+
<useCaseId value="MC-39953"/>
19+
<group value="cms"/>
20+
<group value="ui"/>
21+
</annotations>
22+
<before>
23+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
24+
</before>
25+
<after>
26+
<actionGroup ref="AdminOpenCMSPagesGridActionGroup" stepKey="navigateToCmsPageGridAgain"/>
27+
<actionGroup ref="ClearFiltersAdminDataGridActionGroup" stepKey="resetGridFilters"/>
28+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
29+
</after>
30+
<generateDate date="now" format="m/d/Y" stepKey="today"/>
31+
<generateDate date="+1 day" format="m/d/Y" stepKey="tomorrow"/>
32+
<generateDate date="now" format="M j, Y" stepKey="todayFormatted"/>
33+
<generateDate date="+1 day" format="M j, Y" stepKey="tomorrowFormatted"/>
34+
<generateDate date="+100 day" format="m/d/Y" stepKey="newDateFrom"/>
35+
<generateDate date="+101 day" format="m/d/Y" stepKey="newDateTo"/>
36+
<generateDate date="+100 day" format="M j, Y" stepKey="newDateFromFormatted"/>
37+
<generateDate date="+101 day" format="M j, Y" stepKey="newDateToFormatted"/>
38+
<actionGroup ref="AdminOpenCMSPagesGridActionGroup" stepKey="navigateToCmsPageGrid"/>
39+
<actionGroup ref="AdminGridColumnShowActionGroup" stepKey="showCustomerEmailColumn">
40+
<argument name="columnLabel" value="Custom design from"/>
41+
</actionGroup>
42+
<actionGroup ref="AdminGridColumnShowActionGroup" stepKey="showCustomerEmailColumnTwo">
43+
<argument name="columnLabel" value="Custom design to"/>
44+
</actionGroup>
45+
<actionGroup ref="ClearFiltersAdminDataGridActionGroup" stepKey="clickClearFilters"/>
46+
<fillField selector="{{AdminDataGridHeaderSection.search}}" userInput="404 Not Found" stepKey="fillKeywordSearchFieldWithSecondCustomerEmail"/>
47+
<click selector="{{AdminDataGridHeaderSection.submitSearch}}" stepKey="clickKeywordSearch"/>
48+
<see userInput="404 Not Found" selector="{{AdminGridRow.rowOne}}" stepKey="seeFirstCmsPageAfterFiltering"/>
49+
<click selector="{{CmsPagesPageActionsSection.firstItemSelectButton}}" stepKey="clickOnSelectButton"/>
50+
<click selector="{{CmsPagesPageActionsSection.firstItemEditButton}}" stepKey="clickOnEditButton"/>
51+
<click selector="{{CmsDesignSection.customDesignUpdateTab}}" stepKey="clickOnDesignTab"/>
52+
<waitForElementVisible selector="{{CmsDesignSection.customDesignFrom}}" stepKey="waitForLayoutDropDown" />
53+
<fillField selector="{{CmsDesignSection.customDesignFrom}}" userInput="{$today}" stepKey="fillDateFrom"/>
54+
<fillField selector="{{CmsDesignSection.customDesignTo}}" userInput="{$tomorrow}" stepKey="fillDateTo"/>
55+
<selectOption selector="{{CmsDesignSection.customTheme}}" userInput="{{MagentoBlankTheme.name}}" stepKey="fillCustomTheme"/>
56+
<actionGroup ref="SaveCmsPageActionGroup" stepKey="saveCmsPage"/>
57+
<see userInput="{$todayFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design from')}}" stepKey="assertCustomDesignFrom"/>
58+
<see userInput="{$tomorrowFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design to')}}" stepKey="assertCustomDesignTo"/>
59+
<click selector="{{AdminDataGridTableSection.rows}}" stepKey="clickEdit"/>
60+
<waitForElementVisible selector="{{AdminCmsPageGridInlineEditSection.customLayout}}" stepKey="waitForDate"/>
61+
<selectOption userInput="2 columns with right bar" selector="{{AdminCmsPageGridInlineEditSection.customLayout}}" stepKey="changeLayoutFromGrid"/>
62+
<click selector="{{AdminCmsPageGridInlineEditSection.savePageButton}}" stepKey="clickSaveFromGrid"/>
63+
<see userInput="{$todayFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design from')}}" stepKey="assertCustomDesignFrom2"/>
64+
<see userInput="{$tomorrowFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design to')}}" stepKey="assertCustomDesignTo2"/>
65+
<click selector="{{AdminDataGridTableSection.rows}}" stepKey="clickEdit2"/>
66+
<waitForElementVisible selector="{{AdminCmsPageGridInlineEditSection.customLayout}}" stepKey="waitForDate2"/>
67+
<selectOption userInput="2 columns with left bar" selector="{{AdminCmsPageGridInlineEditSection.customLayout}}" stepKey="changeLayoutFromGrid2"/>
68+
<click selector="{{AdminCmsPageGridInlineEditSection.savePageButton}}" stepKey="clickSaveFromGrid2"/>
69+
<see userInput="{$todayFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design from')}}" stepKey="assertCustomDesignFrom3"/>
70+
<see userInput="{$tomorrowFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design to')}}" stepKey="assertCustomDesignTo3"/>
71+
<click selector="{{AdminDataGridTableSection.rows}}" stepKey="clickEdit3"/>
72+
<waitForElementVisible selector="{{AdminCmsPageGridInlineEditSection.customDesignFrom}}" stepKey="waitForDate3"/>
73+
<fillField selector="{{AdminCmsPageGridInlineEditSection.customDesignFrom}}" userInput="{$newDateFrom}" stepKey="fillDateFromInGrid"/>
74+
<fillField selector="{{AdminCmsPageGridInlineEditSection.customDesignTo}}" userInput="{$newDateTo}" stepKey="fillDateToInGrid"/>
75+
<click selector="{{AdminCmsPageGridInlineEditSection.savePageButton}}" stepKey="clickSaveFromGrid3"/>
76+
<see userInput="{$newDateFromFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design from')}}" stepKey="assertCustomDesignFrom4"/>
77+
<see userInput="{$newDateToFormatted}" selector="{{AdminOrdersGridSection.gridCell('2','Custom design to')}}" stepKey="assertCustomDesignTo4"/>
78+
</test>
79+
</tests>

0 commit comments

Comments
 (0)