Skip to content

Commit 165cb13

Browse files
committed
Merge remote-tracking branch 'mainline/2.4-develop' into 2.4-develop-pr3
2 parents f7564e0 + 21c59de commit 165cb13

21 files changed

+453
-7
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
<argument name="category" value="$$createPreReqCategory$$"/>
3232
<argument name="simpleProduct" value="ProductWithUnicode"/>
3333
</actionGroup>
34+
<magentoCLI command="indexer:reindex" stepKey="reindex"/>
35+
<magentoCLI command="cache:flush" stepKey="flushCache"/>
3436
<actionGroup ref="AssertProductInStorefrontCategoryPage" stepKey="assertProductInStorefront1">
3537
<argument name="category" value="$$createPreReqCategory$$"/>
3638
<argument name="product" value="ProductWithUnicode"/>

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@
131131
userInput="$$createProduct1.name$$" stepKey="seeProductName4"/>
132132
<see selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct12.name$$)}}"
133133
userInput="$$createProduct12.name$$" stepKey="seeProductName5"/>
134-
<waitForText userInput="$$createCategory.name$$ (ID: 6) (2)" stepKey="seeCorrectProductCount"/>
135134
<dontSee selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct0.name$$)}}"
136135
userInput="$$createProduct0.name$$" stepKey="dontSeeProductName"/>
137136
<dontSee selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct2.name$$)}}"
@@ -151,7 +150,6 @@
151150
userInput="$$createProduct2.name$$" stepKey="seeProductName6"/>
152151
<see selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct12.name$$)}}"
153152
userInput="$$createProduct12.name$$" stepKey="seeProductName7"/>
154-
<waitForText userInput="$$createCategory.name$$ (ID: 6) (2)" stepKey="seeCorrectProductCount2"/>
155153
<dontSee selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct0.name$$)}}"
156154
userInput="$$createProduct0.name$$" stepKey="dontSeeProductName2"/>
157155
<dontSee selector="{{AdminCategoryProductsGridSection.productGridNameProduct($$createProduct2.name$$)}}"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="StorefrontClickHeaderLinkActionGroup">
11+
<annotations>
12+
<description>Clicks a link in the storefront header.</description>
13+
</annotations>
14+
<arguments>
15+
<argument name="linkName" type="string" defaultValue="Create an Account"/>
16+
</arguments>
17+
18+
<click stepKey="clickTheLink" selector="{{StorefrontHeaderSection.headerLinkByText(linkName)}}"/>
19+
<waitForPageLoad stepKey="wait"/>
20+
</actionGroup>
21+
</actionGroups>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="StorefrontSeeHeaderLinksActionGroup">
11+
<annotations>
12+
<description>See a link by name in the storefront header.</description>
13+
</annotations>
14+
<arguments>
15+
<argument name="linkName" type="string" defaultValue="Create an Account"/>
16+
</arguments>
17+
<see stepKey="seeElement" selector="{{StorefrontHeaderSection.headerlinks}}" userInput="{{linkName}}"/>
18+
</actionGroup>
19+
</actionGroups>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
11+
<section name="StorefrontHeaderSection">
12+
<element name="headerlinks" type="text" selector="ul.header.links"/>
13+
<element name="headerLinkByText" type="text" selector="//ul[contains(@class, 'header') and contains(@class, 'links')]/li/a[contains(text(),'{{LinkName}}')]" parameterized="true"/>
14+
</section>
15+
</sections>
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AssertMessageCustomerCreateAccountPasswordComplexityActionGroup">
12+
<annotations>
13+
<description>Assert is shown an error about their password during new user form filling.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="message" type="string"/>
17+
</arguments>
18+
<see userInput="{{message}}" selector="{{StorefrontCustomerCreateFormSection.passwordErrorMessages}}" stepKey="verifyMessage"/>
19+
</actionGroup>
20+
</actionGroups>

app/code/Magento/Customer/Test/Mftf/Data/CustomerData.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,24 @@
300300
<requiredEntity type="address">US_Address_TX</requiredEntity>
301301
<requiredEntity type="address">US_Address_NY_Not_Default_Address</requiredEntity>
302302
</entity>
303+
<entity name="Simple_Customer_With_Password_Length_Is_Below_Eight_Characters" type="customer">
304+
<data key="group_id">1</data>
305+
<data key="email" unique="prefix">John.Doe@example.com</data>
306+
<data key="firstname">John</data>
307+
<data key="lastname">Doe</data>
308+
<data key="fullname">John Doe</data>
309+
<data key="password">123123</data>
310+
<data key="store_id">0</data>
311+
<data key="website_id">0</data>
312+
</entity>
313+
<entity name="Simple_Customer_With_Not_Secure_Password" type="customer">
314+
<data key="group_id">1</data>
315+
<data key="email" unique="prefix">John.Doe@example.com</data>
316+
<data key="firstname">John</data>
317+
<data key="lastname">Doe</data>
318+
<data key="fullname">John Doe</data>
319+
<data key="password">123123qa</data>
320+
</entity>
303321
<entity name="Simple_US_Customer_Incorrect_Email" type="customer">
304322
<data key="group_id">0</data>
305323
<data key="default_billing">true</data>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<element name="passwordField" type="input" selector="#password"/>
1818
<element name="confirmPasswordField" type="input" selector="#password-confirmation"/>
1919
<element name="createAccountButton" type="button" selector="button.action.submit.primary" timeout="30"/>
20+
<element name="passwordErrorMessages" type="text" selector="#password-error"/>
2021
</section>
2122
<section name="StoreFrontCustomerAdvancedAttributesSection">
2223
<element name="textFieldAttribute" type="input" selector="//input[@id='{{var}}']" parameterized="true" />

app/code/Magento/Sales/Test/Mftf/Test/AdminCreateCreditMemoPartialRefundTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
<waitForPageLoad stepKey="waitForResultPage"/>
8181

8282
<!-- Perform all assertions: assert refund success create message -->
83+
<waitForElementVisible selector="{{AdminIndexManagementSection.successMessage}}" stepKey="waitForSuccessMessage"/>
8384
<see selector="{{AdminIndexManagementSection.successMessage}}" userInput="You created the credit memo." stepKey="assertRefundSuccessCreateMessage"/>
8485

8586
<!-- Assert Credit Memo button -->
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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="NewCustomerPasswordComplexityTest">
12+
<annotations>
13+
<features value="Security"/>
14+
<stories value="Checking customer's password complexity"/>
15+
<title value="Notify the customer if password complexity does not match the requirements"/>
16+
<description value="Notify the customer if password complexity does not match the requirements"/>
17+
<testCaseId value="MC-14368"/>
18+
<group value="security"/>
19+
<group value="mtf_migrated"/>
20+
</annotations>
21+
22+
<!-- Go to storefront home page -->
23+
<actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="openStoreFrontHomePage"/>
24+
25+
<!-- See the Registration Link -->
26+
<actionGroup ref="StorefrontSeeHeaderLinksActionGroup" stepKey="seeTheLink"/>
27+
28+
<!-- Click the Registration Link -->
29+
<actionGroup ref="StorefrontClickHeaderLinkActionGroup" stepKey="clickTheLink">
30+
<argument name="linkName" value="Create an Account"/>
31+
</actionGroup>
32+
33+
<!-- Fill Registration Form with not secure enough password -->
34+
<actionGroup ref="StorefrontFillCustomerAccountCreationFormActionGroup" stepKey="fillRegistrationFormPasswordNotSecure">
35+
<argument name="customer" value="Simple_Customer_With_Not_Secure_Password"/>
36+
</actionGroup>
37+
38+
<!-- See the Error -->
39+
<actionGroup ref="AssertMessageCustomerCreateAccountPasswordComplexityActionGroup" stepKey="seeTheErrorPasswordSecure">
40+
<argument name="message" value="Minimum of different classes of characters in password is 3. Classes of characters: Lower Case, Upper Case, Digits, Special Characters."/>
41+
</actionGroup>
42+
</test>
43+
</tests>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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="NewCustomerPasswordLengthTest">
12+
<annotations>
13+
<features value="Security"/>
14+
<stories value="Checking customer's password length"/>
15+
<title value="Notify the customer if password length does not match the requirements"/>
16+
<description value="Notify the customer if password length does not match the requirements"/>
17+
<testCaseId value="MC-14367"/>
18+
<group value="security"/>
19+
<group value="mtf_migrated"/>
20+
</annotations>
21+
22+
<!-- Go to storefront home page -->
23+
<actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="openStoreFrontHomePage"/>
24+
25+
<!-- See the Registration Link -->
26+
<actionGroup ref="StorefrontSeeHeaderLinksActionGroup" stepKey="seeTheLink"/>
27+
28+
<!-- Click the Registration Link -->
29+
<actionGroup ref="StorefrontClickHeaderLinkActionGroup" stepKey="clickTheLink">
30+
<argument name="linkName" value="Create an Account"/>
31+
</actionGroup>
32+
33+
<!-- Fill Registration Form with Password length is bellow 8 Characters -->
34+
<actionGroup ref="StorefrontFillCustomerAccountCreationFormActionGroup" stepKey="fillRegistrationFormPasswordLengthBellowEightCharacters">
35+
<argument name="customer" value="Simple_Customer_With_Password_Length_Is_Below_Eight_Characters"/>
36+
</actionGroup>
37+
38+
<!-- See the Error -->
39+
<actionGroup ref="AssertMessageCustomerCreateAccountPasswordComplexityActionGroup" stepKey="seeTheErrorPasswordLength">
40+
<argument name="message" value="Minimum length of this field must be equal or greater than 8 symbols. Leading and trailing spaces will be ignored."/>
41+
</actionGroup>
42+
</test>
43+
</tests>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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="AdminCreateNewUrlRewriteForCmsPageActionGroup">
12+
<annotations>
13+
<description>Select "For Csm Page" URL Rewrite type</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="customUrlRewriteValue" type="string"/>
17+
</arguments>
18+
19+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewrite}}" stepKey="clickOnCustomUrlRewrite"/>
20+
<click selector="{{AdminUrlRewriteEditSection.createCustomUrlRewriteValue('customUrlRewriteValue')}}" stepKey="selectForCsmPage"/>
21+
<waitForPageLoad stepKey="waitForCategoryEditSectionToLoad"/>
22+
</actionGroup>
23+
</actionGroups>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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="AdminFillNewCmsPageUrlRewriteFormActionGroup">
12+
<annotations>
13+
<description>Fills in the provided URL details. Clicks on Save.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="storeValue" type="string"/>
17+
<argument name="requestPath" type="string"/>
18+
<argument name="redirectTypeValue" type="string"/>
19+
<argument name="description" type="string"/>
20+
</arguments>
21+
22+
<click selector="{{AdminUrlRewriteEditSection.store}}" stepKey="clickOnStore"/>
23+
<click selector="{{AdminUrlRewriteEditSection.storeValue('storeValue')}}" stepKey="clickOnStoreValue"/>
24+
<fillField selector="{{AdminUrlRewriteEditSection.requestPath}}" userInput="{{requestPath}}" stepKey="fillRequestPath"/>
25+
<click selector="{{AdminUrlRewriteEditSection.redirectType}}" stepKey="selectRedirectType"/>
26+
<click selector="{{AdminUrlRewriteEditSection.redirectTypeValue('redirectTypeValue')}}" stepKey="clickOnRedirectTypeValue"/>
27+
<fillField selector="{{AdminUrlRewriteEditSection.description}}" userInput="{{description}}" stepKey="fillDescription"/>
28+
<click selector="{{AdminUrlRewriteEditSection.saveButton}}" stepKey="clickOnSaveButton"/>
29+
</actionGroup>
30+
</actionGroups>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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="AdminGoToAddNewUrlRewritePageActionGroup">
12+
<annotations>
13+
<description>Goes to the Admin Add URL Rewrite edit page</description>
14+
</annotations>
15+
16+
<amOnPage url="{{AdminUrlRewriteEditPage.url}}" stepKey="openUrlRewriteEditPage"/>
17+
<waitForPageLoad stepKey="waitForUrlRewriteEditPageToLoad"/>
18+
</actionGroup>
19+
</actionGroups>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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="AdminSelectCmsPageFromGridForNewUrlRewriteActionGroup">
12+
<annotations>
13+
<description>Select Cms Page for URL Rewrite from the grid</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="cmsPageUrlKey" type="string"/>
17+
</arguments>
18+
19+
<click selector="{{AdminUrlRewriteEditSection.cmsPage('cmsPageUrlKey')}}" stepKey="selectCmsPage"/>
20+
<waitForPageLoad stepKey="waitForPageToLoad"/>
21+
</actionGroup>
22+
</actionGroups>

app/code/Magento/UrlRewrite/Test/Mftf/Section/AdminUrlRewriteEditSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<element name="redirectTypeValue" type="select" selector="//select[@id='redirect_type']//option[contains(., '{{Var}}')]" parameterized="true"/>
2020
<element name="description" type="input" selector="#description"/>
2121
<element name="categoryInTree" type="text" selector="//li[contains(@class,'active-category jstree-open')]/a[contains(., '{{categoryName}}')]" parameterized="true"/>
22+
<element name="cmsPage" selector="//td[contains(text(), '{{cmsPageUrlKey}}')]" type="button" parameterized="true"/>
2223
<element name="saveButton" type="button" selector="#save" timeout="30"/>
2324
<element name="deleteButton" type="button" selector="#delete" timeout="30"/>
2425
<element name="okButton" type="button" selector="//button[@class='action-primary action-accept']" timeout="30"/>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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="AdminDeleteCmsPageUrlRewriteWithNoRedirectsTest">
12+
<annotations>
13+
<stories value="Delete CMS Page URL rewrite with No Redirects"/>
14+
<title value="Delete CMS Page URL rewrite with No Redirects"/>
15+
<description value="Log in to admin and delete CMS Page URL rewrite with No Redirects"/>
16+
<testCaseId value="MC-14648"/>
17+
<group value="mtf_migrated"/>
18+
</annotations>
19+
<before>
20+
<createData entity="simpleCmsPage" stepKey="createCMSPage"/>
21+
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminPanel"/>
22+
</before>
23+
<after>
24+
<deleteData createDataKey="createCMSPage" stepKey="deleteCMSPage"/>
25+
<actionGroup ref="logout" stepKey="logout"/>
26+
</after>
27+
28+
<actionGroup ref="AdminGoToAddNewUrlRewritePageActionGroup" stepKey="openUrlRewriteEditPage"/>
29+
<actionGroup ref="AdminCreateNewUrlRewriteForCmsPageActionGroup" stepKey="selectForCsmPageType">
30+
<argument name="customUrlRewriteValue" value="For CMS page'"/>
31+
</actionGroup>
32+
<actionGroup ref="AdminSelectCmsPageFromGridForNewUrlRewriteActionGroup" stepKey="selectCmsPge">
33+
<argument name="cmsPageUrlKey" value="$$createCMSPage.identifier$$"/>
34+
</actionGroup>
35+
<actionGroup ref="AdminFillNewCmsPageUrlRewriteFormActionGroup" stepKey="fillTheForm">
36+
<argument name="storeValue" value="Default Store View"/>
37+
<argument name="requestPath" value="newrequestpath"/>
38+
<argument name="redirectTypeValue" value="No"/>
39+
<argument name="description" value="cms_default_no_redirect"/>
40+
</actionGroup>
41+
42+
<!--Delete the URL Rewrite for CMS Page with No redirects-->
43+
<actionGroup ref="AdminDeleteUrlRewrite" stepKey="deleteCustomUrlRewrite">
44+
<argument name="requestPath" value="newrequestpath"/>
45+
</actionGroup>
46+
<actionGroup ref="AssertMessageInAdminPanelActionGroup" stepKey="assertSuccessMessage">
47+
<argument name="message" value="You deleted the URL rewrite."/>
48+
</actionGroup>
49+
50+
<!--Search and verify AssertUrlRewriteNotInGrid-->
51+
<actionGroup ref="AdminSearchDeletedUrlRewrite" stepKey="searchDeletedUrlRewriteInGrid">
52+
<argument name="requestPath" value="newrequestpath"/>
53+
</actionGroup>
54+
55+
<!--Verify AssertPageByUrlRewriteIsNotFound-->
56+
<actionGroup ref="AssertPageByUrlRewriteIsNotFound" stepKey="assertPageByUrlRewriteIsNotFound">
57+
<argument name="requestPath" value="newrequestpath"/>
58+
</actionGroup>
59+
</test>
60+
</tests>

0 commit comments

Comments
 (0)