Skip to content

Commit 38f76f7

Browse files
ENGCOM-7610: Frontend customer account order list #28417
- Merge Pull Request #28417 from engcom-Charlie/magento2:front_order_list - Merged commits: 1. 6548d3c 2. 96e2cc0 3. 7a28e6a 4. ecda409 5. 8a9dec2 6. 4c3aaf6 7. b696ab2
2 parents 8513dfd + b696ab2 commit 38f76f7

File tree

9 files changed

+387
-1
lines changed

9 files changed

+387
-1
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="CreateCustomerOrderActionGroup">
12+
<annotations>
13+
<description>Create Order via API assigned to Customer.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="Customer" />
17+
<argument name="Product" />
18+
</arguments>
19+
20+
<createData entity="CustomerCart" stepKey="CustomerCart">
21+
<requiredEntity createDataKey="Customer"/>
22+
</createData>
23+
24+
<createData entity="CustomerCartItem" stepKey="addCartItem">
25+
<requiredEntity createDataKey="CustomerCart"/>
26+
<requiredEntity createDataKey="Product"/>
27+
</createData>
28+
29+
<createData entity="CustomerAddressInformation" stepKey="addCustomerOrderAddress">
30+
<requiredEntity createDataKey="CustomerCart"/>
31+
</createData>
32+
33+
<updateData createDataKey="CustomerCart" entity="CustomerOrderPaymentMethod" stepKey="sendCustomerPaymentInformation">
34+
<requiredEntity createDataKey="CustomerCart"/>
35+
</updateData>
36+
37+
</actionGroup>
38+
</actionGroups>

app/code/Magento/Customer/Test/Mftf/Section/StorefrontCustomerOrderSection.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,9 @@
1717
<element name="viewOrder" type="button" selector="//td[contains(concat(' ',normalize-space(@class),' '),' col actions ')]/a[contains(concat(' ',normalize-space(@class),' '),' action view ')]"/>
1818
<element name="tabRefund" type="button" selector="//a[text()='Refunds']"/>
1919
<element name="grandTotalRefund" type="text" selector="td[data-th='Grand Total'] > strong > span.price"/>
20+
<element name="currentPage" type="text" selector=".order-products-toolbar .pages .current span:nth-of-type(2)"/>
21+
<element name="pageNumber" type="text" selector="//*[@class='order-products-toolbar toolbar bottom']//a[contains(@class, 'page')]//span[2][contains(text() ,'{{var1}}')]" parameterized="true"/>
22+
<element name="perPage" type="select" selector="//*[@class='order-products-toolbar toolbar bottom']//select[@id='limiter']"/>
23+
<element name="rowsInColumn" type="text" selector="//tbody/tr/td[contains(@class, '{{column}}')]" parameterized="true"/>
2024
</section>
2125
</sections>
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="StorefrontCustomerAccountOrderListTest">
12+
<annotations>
13+
<stories value="Frontend Customer Account Orders list"/>
14+
<title value="Verify that the list of Orders is displayed in the grid after changing the number of items on the page"/>
15+
<description value="Verify that the list of Orders is displayed in the grid after changing the number of items on the page."/>
16+
<severity value="CRITICAL"/>
17+
<testCaseId value="MC-34953"/>
18+
<group value="customer"/>
19+
</annotations>
20+
21+
<before>
22+
23+
<!--Create Product via API-->
24+
<createData entity="SimpleProduct2" stepKey="Product"/>
25+
26+
<!--Create Customer via API-->
27+
<createData entity="Simple_US_Customer" stepKey="Customer"/>
28+
29+
<!--Create Orders via API-->
30+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder1">
31+
<argument name="Customer" value="Customer"/>
32+
<argument name="Product" value="Product"/>
33+
</actionGroup>
34+
35+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder2">
36+
<argument name="Customer" value="Customer"/>
37+
<argument name="Product" value="Product"/>
38+
</actionGroup>
39+
40+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder3">
41+
<argument name="Customer" value="Customer"/>
42+
<argument name="Product" value="Product"/>
43+
</actionGroup>
44+
45+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder4">
46+
<argument name="Customer" value="Customer"/>
47+
<argument name="Product" value="Product"/>
48+
</actionGroup>
49+
50+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder5">
51+
<argument name="Customer" value="Customer"/>
52+
<argument name="Product" value="Product"/>
53+
</actionGroup>
54+
55+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder6">
56+
<argument name="Customer" value="Customer"/>
57+
<argument name="Product" value="Product"/>
58+
</actionGroup>
59+
60+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder7">
61+
<argument name="Customer" value="Customer"/>
62+
<argument name="Product" value="Product"/>
63+
</actionGroup>
64+
65+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder8">
66+
<argument name="Customer" value="Customer"/>
67+
<argument name="Product" value="Product"/>
68+
</actionGroup>
69+
70+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder9">
71+
<argument name="Customer" value="Customer"/>
72+
<argument name="Product" value="Product"/>
73+
</actionGroup>
74+
75+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder10">
76+
<argument name="Customer" value="Customer"/>
77+
<argument name="Product" value="Product"/>
78+
</actionGroup>
79+
80+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder11">
81+
<argument name="Customer" value="Customer"/>
82+
<argument name="Product" value="Product"/>
83+
</actionGroup>
84+
85+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder12">
86+
<argument name="Customer" value="Customer"/>
87+
<argument name="Product" value="Product"/>
88+
</actionGroup>
89+
90+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder13">
91+
<argument name="Customer" value="Customer"/>
92+
<argument name="Product" value="Product"/>
93+
</actionGroup>
94+
95+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder14">
96+
<argument name="Customer" value="Customer"/>
97+
<argument name="Product" value="Product"/>
98+
</actionGroup>
99+
100+
<actionGroup ref="CreateCustomerOrderActionGroup" stepKey="createCustomerOrder15">
101+
<argument name="Customer" value="Customer"/>
102+
<argument name="Product" value="Product"/>
103+
</actionGroup>
104+
<!--Create Orders via API-->
105+
106+
</before>
107+
108+
<after>
109+
<actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="customerLogout"/>
110+
<deleteData createDataKey="Product" stepKey="deleteProduct"/>
111+
<deleteData createDataKey="Customer" stepKey="deleteCustomer"/>
112+
</after>
113+
114+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginToStorefront">
115+
<argument name="Customer" value="$$Customer$$"/>
116+
</actionGroup>
117+
118+
<actionGroup ref="StorefrontCustomerGoToSidebarMenu" stepKey="goToSidebarMenu">
119+
<argument name="menu" value="My Orders"/>
120+
</actionGroup>
121+
122+
<seeElement selector="{{StorefrontCustomerOrderSection.isMyOrdersSection}}" stepKey="waitOrderHistoryPage"/>
123+
124+
<scrollTo selector="{{StorefrontCustomerOrderSection.currentPage}}" stepKey="scrollToBottomToolbarSection"/>
125+
126+
<click selector="{{StorefrontCustomerOrderSection.pageNumber('2')}}" stepKey="clickOnPage2"/>
127+
128+
<scrollTo selector="{{StorefrontCustomerOrderSection.perPage}}" stepKey="scrollToLimiter"/>
129+
130+
<selectOption userInput="20" selector="{{StorefrontCustomerOrderSection.perPage}}" stepKey="selectLimitOnPage"/>
131+
132+
<waitForPageLoad stepKey="waitForLoadPage"/>
133+
134+
<seeElement selector="{{StorefrontCustomerOrderSection.isMyOrdersSection}}"
135+
stepKey="seeElementOrderHistoryPage"/>
136+
137+
<dontSee selector="{{StorefrontOrderInformationMainSection.emptyMessage}}"
138+
userInput="You have placed no orders." stepKey="dontSeeEmptyMessage"/>
139+
140+
<seeNumberOfElements selector="{{StorefrontCustomerOrderSection.rowsInColumn('id')}}" userInput="15"
141+
stepKey="seeRowsCount"/>
142+
143+
</test>
144+
</tests>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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" xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
10+
<entity name="CustomerCart" type="CustomerCart">
11+
<var key="customer_id" entityType="customer" entityKey="id"/>
12+
</entity>
13+
14+
<entity name="CustomerAddressInformation" type="CustomerAddressInformation">
15+
<var key="cart_id" entityKey="return" entityType="CustomerCart"/>
16+
<requiredEntity type="shipping_address">ShippingAddressTX</requiredEntity>
17+
<requiredEntity type="billing_address">BillingAddressTX</requiredEntity>
18+
<data key="shipping_method_code">flatrate</data>
19+
<data key="shipping_carrier_code">flatrate</data>
20+
</entity>
21+
22+
<entity name="CustomerOrderPaymentMethod" type="CustomerPaymentInformation">
23+
<var key="cart_id" entityKey="return" entityType="CustomerCart"/>
24+
<requiredEntity type="payment_method">PaymentMethodCheckMoneyOrder</requiredEntity>
25+
<requiredEntity type="billing_address">BillingAddressTX</requiredEntity>
26+
</entity>
27+
</entities>
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+
9+
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
11+
<entity name="CustomerCartItem" type="CustomerCartItem">
12+
<var key="quote_id" entityKey="return" entityType="CustomerCart"/>
13+
<var key="sku" entityKey="sku" entityType="product"/>
14+
<data key="qty">1</data>
15+
</entity>
16+
</entities>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
<operations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataOperation.xsd">
11+
12+
<operation name="CreateCustomerCartItem" dataType="CustomerCartItem" type="create" auth="adminOauth" url="/V1/carts/mine/items" method="POST">
13+
<contentType>application/json</contentType>
14+
<object key="cartItem" dataType="CustomerCartItem">
15+
<field key="quote_id" type="string">string</field>
16+
<field key="sku" type="string">string</field>
17+
<field key="qty">integer</field>
18+
</object>
19+
</operation>
20+
</operations>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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+
<operations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataOperation.xsd">
11+
<operation name="CreateCustomerCart" dataType="CustomerCart" type="create"
12+
auth="adminOauth" url="/V1/carts/mine" method="POST" >
13+
<contentType>application/json</contentType>
14+
<field key="customer_id">string</field>
15+
</operation>
16+
17+
<operation name="AddAddressInfoToCustomerCart" dataType="CustomerAddressInformation" type="create" auth="adminOauth" url="/V1/carts/mine/shipping-information" method="POST">
18+
<contentType>application/json</contentType>
19+
<field key="cart_id">string</field>
20+
<object key="addressInformation" dataType="CustomerAddressInformation">
21+
<object key="shipping_address" dataType="shipping_address">
22+
<field key="city">string</field>
23+
<field key="region">string</field>
24+
<field key="region_code">string</field>
25+
<field key="region_id">integer</field>
26+
<field key="country_id">string</field>
27+
<array key="street">
28+
<value>string</value>
29+
</array>
30+
<field key="postcode">string</field>
31+
<field key="firstname">string</field>
32+
<field key="lastname">string</field>
33+
<field key="email">string</field>
34+
<field key="telephone">string</field>
35+
</object>
36+
<object key="billing_address" dataType="billing_address">
37+
<field key="city">string</field>
38+
<field key="region">string</field>
39+
<field key="region_code">string</field>
40+
<field key="region_id">integer</field>
41+
<field key="country_id">string</field>
42+
<array key="street">
43+
<value>string</value>
44+
</array>
45+
<field key="postcode">string</field>
46+
<field key="firstname">string</field>
47+
<field key="lastname">string</field>
48+
<field key="email">string</field>
49+
<field key="telephone">string</field>
50+
</object>
51+
<field key="shipping_method_code">string</field>
52+
<field key="shipping_carrier_code">string</field>
53+
</object>
54+
</operation>
55+
56+
<operation name="SendCustomerPaymentInformation" dataType="CustomerPaymentInformation" type="update" auth="adminOauth" url="/V1/carts/mine/payment-information" method="POST">
57+
<contentType>application/json</contentType>
58+
<field key="cart_id">string</field>
59+
<object key="paymentMethod" dataType="payment_method">
60+
<field key="method">string</field>
61+
</object>
62+
</operation>
63+
</operations>

app/code/Magento/Theme/Block/Html/Pager.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\Theme\Block\Html;
78

89
/**
@@ -466,7 +467,26 @@ public function getPageUrl($page)
466467
*/
467468
public function getLimitUrl($limit)
468469
{
469-
return $this->getPagerUrl([$this->getLimitVarName() => $limit]);
470+
return $this->getPagerUrl($this->getPageLimitParams($limit));
471+
}
472+
473+
/**
474+
* Return page limit params
475+
*
476+
* @param int $limit
477+
* @return array
478+
*/
479+
private function getPageLimitParams(int $limit): array
480+
{
481+
$data = [$this->getLimitVarName() => $limit];
482+
483+
$currentPage = $this->getCurrentPage();
484+
$availableCount = (int) ceil($this->getTotalNum() / $limit);
485+
if ($currentPage !== 1 && $availableCount < $currentPage) {
486+
$data = array_merge($data, [$this->getPageVarName() => $availableCount === 1 ? null : $availableCount]);
487+
}
488+
489+
return $data;
470490
}
471491

472492
/**

0 commit comments

Comments
 (0)