Skip to content

Commit d93e234

Browse files
committed
Merge branch 'ACP2E-3097' of https://github.com/adobe-commerce-tier-4/magento2ce into PR-2024-07-11
2 parents e364e6e + 8c28977 commit d93e234

File tree

7 files changed

+286
-118
lines changed

7 files changed

+286
-118
lines changed

app/code/Magento/Catalog/Test/Mftf/Data/ConfigData.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,12 @@
2525
<data key="path">catalog/review/allow_guest</data>
2626
<data key="value">0</data>
2727
</entity>
28+
<entity name="EnableJavascriptCalendar">
29+
<data key="path">catalog/custom_options/use_calendar</data>
30+
<data key="value">1</data>
31+
</entity>
32+
<entity name="DisableJavascriptCalendar">
33+
<data key="path">catalog/custom_options/use_calendar</data>
34+
<data key="value">0</data>
35+
</entity>
2836
</entities>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
9+
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
11+
<entity name="productCustomizableDatepickerOption1">
12+
<data key="title" unique="suffix">option1</data>
13+
<data key="is_required">1</data>
14+
<data key="type">Date</data>
15+
<data key="option_0_price">100</data>
16+
<data key="option_0_price_type">Fixed</data>
17+
<data key="option_0_sku" unique="suffix">sku1_</data>
18+
</entity>
19+
<entity name="productCustomizableDatepickerOption2">
20+
<data key="title" unique="suffix">option2</data>
21+
<data key="is_required">1</data>
22+
<data key="type">Date</data>
23+
<data key="option_0_price">200</data>
24+
<data key="option_0_price_type">Fixed</data>
25+
<data key="option_0_sku" unique="suffix">sku2_</data>
26+
</entity>
27+
<entity name="productCustomizableDatepicker">
28+
<data key="name">customizable datepicker product</data>
29+
<data key="sku">customizable_datepicker_product</data>
30+
<data key="price">100</data>
31+
<data key="weight">1</data>
32+
<data key="quantity">100</data>
33+
</entity>
34+
</entities>

app/code/Magento/Catalog/Test/Mftf/Section/AdminProductCustomizableOptionsSection/AdminProductCustomizableOptionsSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<element name="customMultiSelect" type="select" selector="[name='product[multi_en]']"/>
3030

3131
<element name="optionTypeDropDown" type="select" selector="//table[@data-index='options']//tr[{{index}}]//div[@data-index='type']//div[contains(@class, 'action-select-wrap')]" parameterized="true" timeout="30"/>
32-
<element name="optionTypeItem" type="select" selector="//table[@data-index='options']//tr[{{index}}]//div[@data-index='type']//*[contains(@class, 'action-menu-item')]//*[contains(., '{{optionValue}}')]" parameterized="true" timeout="30"/>
32+
<element name="optionTypeItem" type="select" selector="//table[@data-index='options']//tr[{{index}}]//div[@data-index='type']//*[contains(@class, 'action-menu-item')]//label[contains(text(), '{{optionValue}}')]" parameterized="true" timeout="30"/>
3333
<element name="checkSelect" type="select" selector="//span[text()='{{var1}}']/parent::div/parent::div/parent::div//span[text()='Option Type']/parent::label/parent::div/parent::div//div[@data-role='selected-option']" parameterized="true"/>
3434
<element name="checkOptionType" type="select" selector="//span[text()='{{optionTitle}}']/parent::div/parent::div/parent::div//parent::label/parent::div/parent::div//li[@class='admin__action-multiselect-menu-inner-item']//label[text()='{{optionType}}']" parameterized="true"/>
3535
<element name="checkDropDown" type="select" selector="//span[text()='{{var1}}']/parent::div/parent::div/parent::div//parent::label/parent::div/parent::div//li[@class='admin__action-multiselect-menu-inner-item']//label[text()='Drop-down']" parameterized="true"/>

app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/composite/fieldset/options/type/date.phtml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
/* @var $block \Magento\Catalog\Block\Product\View\Options\Type\Date */
88
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
9+
/** @var \Magento\Framework\Escaper $escaper */
910
?>
1011

1112
<?php $_option = $block->getOption(); ?>
1213
<?php $_optionId = (int)$_option->getId(); ?>
1314
<?php $optionId = /* @noEscape */ $_optionId ?>
1415
<div class="admin__field field<?= $_option->getIsRequire() ? ' required' : '' ?>">
1516
<label class="label admin__field-label">
16-
<?= $block->escapeHtml($_option->getTitle()) ?>
17+
<?= $escaper->escapeHtml($_option->getTitle()) ?>
1718
<?= /* @noEscape */ $block->getFormattedPrice() ?>
1819
</label>
1920
<div class="admin__field-control control">
@@ -56,7 +57,6 @@ script;
5657
"mage/backend/validation"
5758
], function(jQuery){
5859
59-
//<![CDATA[
6060
script;
6161
if ($_option->getIsRequire()):
6262
$scriptString .= <<<script
@@ -88,7 +88,6 @@ script;
8888
script;
8989
endif;
9090
$scriptString .= <<<script
91-
//]]>
9291
9392
});
9493
script;

app/code/Magento/Sales/Test/Mftf/Section/AdminOrderFormItemsSection.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,8 @@
4141
<element name="totalRecords" type="text" selector="#sales_order_create_search_grid-total-count"/>
4242
<element name="numberOfPages" type="text" selector="div.admin__data-grid-pager-wrap div.admin__data-grid-pager > label"/>
4343
<element name="productName" type="button" selector="(.//*[@class='col-product'])[2]/span"/>
44+
<element name="productCompositeDatePicker" type="button" selector="//*[@id='product_composite_configure_fields_options']//div[{{row}}]//button[contains(@class, 'ui-datepicker-trigger')]" parameterized="true"/>
45+
<element name="datepickerGoToday" type="button" selector="#ui-datepicker-div button.ui-datepicker-current" timeout="30"/>
46+
<element name="datepickerClose" type="button" selector="#ui-datepicker-div button.ui-datepicker-close" timeout="30"/>
4447
</section>
4548
</sections>
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright 2024 Adobe
5+
* All Rights Reserved.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="AdminCreateOrderCustomizableProductDatepickerTest">
12+
<annotations>
13+
<title value="Create Order in Admin with datepicker for product with multiple customizable options"/>
14+
<stories value="ACP2E-3097: Datepicker for product with multiple Customizable Options with date fields not working when placing order from admin"/>
15+
<description value="Create order with datepicker for product with multiple customizable options."/>
16+
<features value="Sales"/>
17+
<testCaseId value="AC-12089"/>
18+
<severity value="AVERAGE"/>
19+
<group value="Sales"/>
20+
</annotations>
21+
<before>
22+
<magentoCLI command="config:set {{EnableJavascriptCalendar.path}} {{EnableFlatRateConfigData.value}}" stepKey="enableDatepicker"/>
23+
<createData entity="FlatRateShippingMethodDefault" stepKey="setDefaultFlatRateShippingMethod"/>
24+
<createData entity="CashOnDeliveryPaymentMethodDefault" stepKey="cashOnDeliveryPaymentMethod"/>
25+
<createData entity="Simple_US_Customer_CA" stepKey="simpleCustomer"/>
26+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
27+
</before>
28+
<after>
29+
<magentoCLI command="config:set {{DisableCashOnDeliveryPaymentMethod.path}} {{DisableCashOnDeliveryPaymentMethod.value}}" stepKey="disableCashOnDeliveryMethod"/>
30+
<magentoCLI command="config:set {{DisableJavascriptCalendar.path}} {{DisableJavascriptCalendar.value}}" stepKey="disableDatepicker"/>
31+
<deleteData createDataKey="simpleCustomer" stepKey="deleteSimpleCustomer"/>
32+
<actionGroup ref="DeleteProductActionGroup" stepKey="deleteCustomizableProduct">
33+
<argument name="productName" value="productCustomizableDatepicker.name"/>
34+
</actionGroup>
35+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
36+
</after>
37+
<!-- Create customizable product -->
38+
<actionGroup ref="AdminProductCatalogPageOpenActionGroup" stepKey="openProductCatalogPage"/>
39+
<actionGroup ref="AdminClickAddProductToggleAndSelectProductTypeActionGroup" stepKey="clickSimpleProductFromDropDownList">
40+
<argument name="productType" value="simple"/>
41+
</actionGroup>
42+
<fillField selector="{{AdminProductFormSection.productName}}" userInput="{{productCustomizableDatepicker.name}}" stepKey="fillProductName"/>
43+
<fillField selector="{{AdminProductFormSection.productSku}}" userInput="{{productCustomizableDatepicker.sku}}" stepKey="fillProductSku"/>
44+
<fillField selector="{{AdminProductFormSection.productPrice}}" userInput="{{productCustomizableDatepicker.price}}" stepKey="fillSimpleProductPrice"/>
45+
<fillField selector="{{AdminProductFormSection.productWeight}}" userInput="{{productCustomizableDatepicker.weight}}" stepKey="fillSimpleProductWeight"/>
46+
<actionGroup ref="AdminFillProductQtyOnProductFormActionGroup" stepKey="fillSimpleProductQuantity">
47+
<argument name="productQty" value="{{productCustomizableDatepicker.quantity}}"/>
48+
</actionGroup>
49+
<click selector="{{AdminProductCustomizableOptionsSection.checkIfCustomizableOptionsTabOpen}}" stepKey="clickAdminProductCustomizableOption"/>
50+
51+
<!-- Create datepicker option1 -->
52+
<click selector="{{AdminProductCustomizableOptionsSection.addOptionBtn}}" stepKey="clickAddOptionButton1"/>
53+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionTitleInput('0')}}" userInput="{{productCustomizableDatepickerOption1.title}}" stepKey="fillOptionTitleForFirstDataSet"/>
54+
<click selector="{{AdminProductCustomizableOptionsSection.optionTypeDropDown('1')}}" stepKey="selectOptionTypeDropDownFirstDataSet"/>
55+
<scrollTo selector="{{AdminProductCustomizableOptionsSection.lastOptionTitle}}" y="50" stepKey="scrollToOptionList1" />
56+
<click selector="{{AdminProductCustomizableOptionsSection.optionTypeItem('1', productCustomizableDatepickerOption1.type)}}" stepKey="selectOptionFieldFromDropDownForFirstDataSet"/>
57+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionPrice('0')}}" userInput="{{productCustomizableDatepickerOption1.option_0_price}}" stepKey="fillOptionPriceForFirstDataSet"/>
58+
<selectOption selector="{{AdminProductCustomizableOptionsSection.optionPriceType('0')}}" userInput="{{productCustomizableDatepickerOption1.option_0_price_type}}" stepKey="selectOptionPriceTypeForFirstDataSet"/>
59+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionSku('0')}}" userInput="{{productCustomizableDatepickerOption1.option_0_sku}}" stepKey="fillOptionSkuForFirstDataSet"/>
60+
61+
<!-- Create datepicker option2 -->
62+
<click selector="{{AdminProductCustomizableOptionsSection.addOptionBtn}}" stepKey="clickAddOptionButton2"/>
63+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionTitleInput('1')}}" userInput="{{productCustomizableDatepickerOption2.title}}" stepKey="fillOptionTitleForSecondDataSet"/>
64+
<click selector="{{AdminProductCustomizableOptionsSection.optionTypeDropDown('2')}}" stepKey="selectOptionTypeDropDownSecondDataSet"/>
65+
<scrollTo selector="{{AdminProductCustomizableOptionsSection.lastOptionTitle}}" y="50" stepKey="scrollToOptionList2" />
66+
<click selector="{{AdminProductCustomizableOptionsSection.optionTypeItem('2', productCustomizableDatepickerOption2.type)}}" stepKey="selectOptionFieldFromDropDownForSecondDataSet"/>
67+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionPrice('1')}}" userInput="{{productCustomizableDatepickerOption2.option_0_price}}" stepKey="fillOptionPriceForSecondDataSet"/>
68+
<selectOption selector="{{AdminProductCustomizableOptionsSection.optionPriceType('1')}}" userInput="{{productCustomizableDatepickerOption2.option_0_price_type}}" stepKey="selectOptionPriceTypeForSecondDataSet"/>
69+
<fillField selector="{{AdminProductCustomizableOptionsSection.optionSku('1')}}" userInput="{{productCustomizableDatepickerOption2.option_0_sku}}" stepKey="fillOptionSkuForSecondDataSet"/>
70+
71+
<!-- Successful product save -->
72+
<actionGroup ref="AdminProductFormSaveButtonClickActionGroup" stepKey="clickSaveButton"/>
73+
<see selector="{{AdminProductFormSection.successMessage}}" userInput="You saved the product." stepKey="seeAssertVirtualProductSuccessMessage"/>
74+
75+
<!-- Create order with datepicker for product with multiple customizable date options -->
76+
<actionGroup ref="AdminNavigateToNewOrderPageExistingCustomerActionGroup" stepKey="navigateToNewOrderWithExistingCustomer">
77+
<argument name="customer" value="$$simpleCustomer$$"/>
78+
</actionGroup>
79+
<waitForElementVisible selector="{{AdminOrderFormItemsSection.addProducts}}" stepKey="waitForAddProductsButton"/>
80+
<click selector="{{AdminOrderFormItemsSection.addProducts}}" stepKey="clickAddProducts"/>
81+
<fillField selector="{{AdminOrderFormItemsSection.skuFilter}}" userInput="customizable_datepicker_product" stepKey="fillSkuFilterConfigurable"/>
82+
<click selector="{{AdminOrderFormItemsSection.search}}" stepKey="clickSearch"/>
83+
<scrollTo selector="{{AdminOrderFormItemsSection.rowCheck('1')}}" x="0" y="-100" stepKey="scrollToCheckColumn"/>
84+
<checkOption selector="{{AdminOrderFormItemsSection.rowCheck('1')}}" stepKey="selectCustomizableProduct"/>
85+
<wait time="2" stepKey="waitForOptionsToLoad"/>
86+
<click selector="{{AdminOrderFormItemsSection.productCompositeDatePicker('1')}}" stepKey="clickForDataPickerOption1"/>
87+
<click selector="{{AdminOrderFormItemsSection.datepickerGoToday}}" stepKey="selectTodayOption1"/>
88+
<click selector="{{AdminOrderFormItemsSection.datepickerClose}}" stepKey="closeSelectTodayOption1"/>
89+
<click selector="{{AdminOrderFormItemsSection.productCompositeDatePicker('2')}}" stepKey="clickForDataPickerOption2"/>
90+
<click selector="{{AdminOrderFormItemsSection.datepickerGoToday}}" stepKey="selectTodayOption2"/>
91+
<click selector="{{AdminOrderFormItemsSection.datepickerClose}}" stepKey="closeSelectTodayOption2"/>
92+
<fillField selector="{{AdminOrderFormCustomOptionsSection.quantity}}" userInput="1" stepKey="fillProductQty" />
93+
<click selector="{{AdminOrderFormCustomOptionsSection.buttonOk}}" stepKey="clickSaveOptionButton"/>
94+
<waitForPageLoad stepKey="waitForSavedConfigure"/>
95+
<scrollTo selector="{{AdminOrderFormItemsSection.addSelected}}" x="0" y="-100" stepKey="scrollToAddSelectedButton"/>
96+
<click selector="{{AdminOrderFormItemsSection.addSelected}}" stepKey="clickAddSelectedProducts"/>
97+
<actionGroup ref="SelectCashOnDeliveryPaymentMethodActionGroup" stepKey="selectPaymentMethod"/>
98+
<actionGroup ref="OrderSelectFlatRateShippingActionGroup" stepKey="orderSelectFlatRateShippingMethod"/>
99+
<actionGroup ref="AdminSubmitOrderActionGroup" stepKey="submitOrder"/>
100+
<actionGroup ref="VerifyCreatedOrderInformationActionGroup" stepKey="verifyCreatedOrderInformation"/>
101+
</test>
102+
</tests>

0 commit comments

Comments
 (0)