Skip to content

Commit b66506c

Browse files
committed
MQE-2027: MFTF PHP Compatibility Update (PHP 7.4)
- changed formatMoney to formatCurrency
1 parent acba14c commit b66506c

File tree

14 files changed

+154
-54
lines changed

14 files changed

+154
-54
lines changed

Diff for: bin/functional

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
set -e
55

66
echo "==============================="
7-
echo " EXECUTE DevDocsTest "
7+
echo " EXECUTE Functional Tests "
88
echo "==============================="
99
bin/mftf build:project
1010
bin/mftf run:test DevDocsTest -f
11+
bin/mftf run:test FormatCurrencyTest -f

Diff for: composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"ext-dom": "*",
1515
"ext-json": "*",
1616
"ext-openssl": "*",
17+
"ext-intl": "*",
1718
"allure-framework/allure-codeception": "~1.4.0",
1819
"aws/aws-sdk-php": "^3.132",
1920
"codeception/codeception": "~4.1.4",
@@ -53,8 +54,7 @@
5354
"files": ["src/Magento/FunctionalTestingFramework/_bootstrap.php"],
5455
"psr-4": {
5556
"Magento\\FunctionalTestingFramework\\": "src/Magento/FunctionalTestingFramework",
56-
"MFTF\\": "dev/tests/functional/tests/MFTF",
57-
"Magento\\": "../magento5/app/code/Magento/"
57+
"MFTF\\": "dev/tests/functional/tests/MFTF"
5858
}
5959
},
6060
"autoload-dev": {

Diff for: composer.lock

+8-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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="FormatCurrencyTest">
12+
<comment userInput="formatCurrency uses NumberFormatter::formatCurrency(), see https://www.php.net/manual/en/numberformatter.formatcurrency.php" stepKey="comment"/>
13+
<formatCurrency userInput="1234.56789000" locale="de_DE" currency="EUR" stepKey="eurInDE"/>
14+
<assertEquals stepKey="assertEurInDE">
15+
<expectedResult type="string">1.234,57 €</expectedResult>
16+
<actualResult type="variable">$eurInDE</actualResult>
17+
</assertEquals>
18+
<formatCurrency userInput="+1234" locale="de_DE" currency="EUR" stepKey="eurInDEPos"/>
19+
<assertEquals stepKey="assertEurInDEPos">
20+
<expectedResult type="string">1.234,00 €</expectedResult>
21+
<actualResult type="variable">$eurInDEPos</actualResult>
22+
</assertEquals>
23+
<formatCurrency userInput="-1234.56" locale="de_DE" currency="EUR" stepKey="eurInDENeg"/>
24+
<assertEquals stepKey="assertEurInDENeg">
25+
<expectedResult type="string">-1.234,56 €</expectedResult>
26+
<actualResult type="variable">$eurInDENeg</actualResult>
27+
</assertEquals>
28+
29+
<formatCurrency userInput="1234.56789000" locale="de_DE" currency="USD" stepKey="usdInDE"/>
30+
<assertEquals stepKey="assertUsdInDE">
31+
<expectedResult type="string">1.234,57 $</expectedResult>
32+
<actualResult type="variable">$usdInDE</actualResult>
33+
</assertEquals>
34+
<formatCurrency userInput="+1234" locale="de_DE" currency="USD" stepKey="usdInDEPos"/>
35+
<assertEquals stepKey="assertUsdInDEPos">
36+
<expectedResult type="string">1.234,00 $</expectedResult>
37+
<actualResult type="variable">$usdInDEPos</actualResult>
38+
</assertEquals>
39+
<formatCurrency userInput="-1234.56" locale="de_DE" currency="USD" stepKey="usdInDENeg"/>
40+
<assertEquals stepKey="assertUsdInDENeg">
41+
<expectedResult type="string">-1.234,56 $</expectedResult>
42+
<actualResult type="variable">$usdInDENeg</actualResult>
43+
</assertEquals>
44+
45+
<executeJS function="return 10.5;" stepKey="variable"/>
46+
<formatCurrency userInput="$variable" locale="de_DE" currency="EUR" stepKey="usingVariable"/>
47+
<assertEquals stepKey="assertUsingVariable">
48+
<expectedResult type="string">10,50 €</expectedResult>
49+
<actualResult type="variable">$usingVariable</actualResult>
50+
</assertEquals>
51+
</test>
52+
</tests>

Diff for: dev/tests/verification/Resources/ActionGroupWithStepKeyReferences.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class ActionGroupWithStepKeyReferencesCest
4242
$date->setTimezone(new \DateTimeZone("America/Los_Angeles"));
4343
$action5ActionGroup = $date->format("H:i:s");
4444

45-
$action6ActionGroup = $I->formatMoney($action6ActionGroup); // stepKey: action6ActionGroup
45+
$action6ActionGroup = $I->formatCurrency($action6ActionGroup, "en_CA", "USD"); // stepKey: action6ActionGroup
4646
$I->deleteEntity("{$action7ActionGroupActionGroup}", "test"); // stepKey: action7ActionGroup
4747
$I->getEntity("action8ActionGroup", "test", "{$action8}", [], null); // stepKey: action8ActionGroup
4848
$I->updateEntity("1", "test", "{$action9}",[]); // stepKey: action9ActionGroup

Diff for: dev/tests/verification/TestModule/ActionGroup/FunctionalActionGroup/FunctionActionGroupWithStepKeyReferencesActionGroup.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<executeJS function="{$action3}" stepKey="action3"/>
1919
<magentoCLI command="{$action4}" arguments="&quot;stuffHere&quot;" stepKey="action4"/>
2020
<generateDate date="{$action5}" format="H:i:s" stepKey="action5"/>
21-
<formatMoney userInput="{$action6}" stepKey="action6"/>
21+
<formatCurrency userInput="{$action6}" locale="en_CA" currency="USD" stepKey="action6"/>
2222
<deleteData createDataKey="{$action7}" stepKey="action7"/>
2323
<getData entity="{$action8}" stepKey="action8"/>
2424
<updateData entity="{$action9}" stepKey="action9" createDataKey="1"/>

Diff for: dev/tests/verification/TestModule/ActionGroup/XmlDuplicateActionGroup.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@
8282
<executeJS function="1" stepKey="execJS2"/>
8383
<fillField stepKey="fill1"/>
8484
<fillField stepKey="fill21"/>
85-
<formatMoney stepKey="frmtmoney1"/>
86-
<formatMoney stepKey="frmtmoney12"/>
85+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
86+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="USD" stepKey="frmtmoney12"/>
8787
<getData entity="1" stepKey="getdata1"/>
8888
<getData entity="1" stepKey="getdata12"/>
8989
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>

Diff for: dev/tests/verification/TestModule/Test/XmlDuplicateTest/XmlDuplicateTest.xml

+6-6
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@
8585
<executeJS function="1" stepKey="execJS2"/>
8686
<fillField stepKey="fill1"/>
8787
<fillField stepKey="fill21"/>
88-
<formatMoney stepKey="frmtmoney1"/>
89-
<formatMoney stepKey="frmtmoney12"/>
88+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
89+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
9090
<getData entity="1" stepKey="getdata1"/>
9191
<getData entity="1" stepKey="getdata12"/>
9292
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>
@@ -297,8 +297,8 @@
297297
<executeJS function="1" stepKey="execJS2"/>
298298
<fillField stepKey="fill1"/>
299299
<fillField stepKey="fill21"/>
300-
<formatMoney stepKey="frmtmoney1"/>
301-
<formatMoney stepKey="frmtmoney12"/>
300+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
301+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
302302
<getData entity="1" stepKey="getdata1"/>
303303
<getData entity="1" stepKey="getdata12"/>
304304
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>
@@ -508,8 +508,8 @@
508508
<executeJS function="1" stepKey="execJS2"/>
509509
<fillField stepKey="fill1"/>
510510
<fillField stepKey="fill21"/>
511-
<formatMoney stepKey="frmtmoney1"/>
512-
<formatMoney stepKey="frmtmoney12"/>
511+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
512+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
513513
<getData entity="1" stepKey="getdata1"/>
514514
<getData entity="1" stepKey="getdata12"/>
515515
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>

Diff for: docs/test/actions.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -1012,12 +1012,15 @@ Attribute|Type|Use|Description
10121012
<fillField userInput="Sample text" selector="input#myfield" stepKey="fillField"/>
10131013
```
10141014

1015-
### formatMoney
1015+
### formatCurrency
1016+
Format input to specified currency according to the locale specified. Returns formatted string for test use.
1017+
Use NumberFormatter::formatCurrency(), see https://www.php.net/manual/en/numberformatter.formatcurrency.php
10161018

10171019
Attribute|Type|Use|Description
10181020
---|---|---|---
1019-
`userInput`|string|optional| Value for the money form field.
1020-
`locale`|string|optional| The PHP locale value for the store.
1021+
`userInput`|string|required| Number to be formatted.
1022+
`locale`|string|required| The locale to format to.
1023+
`currency`|string|required| The 3-letter ISO 4217 currency code indicating the currency to use.
10211024
`stepKey`|string|required| A unique identifier of the action.
10221025
`before`|string|optional| `stepKey` of action that must be executed next.
10231026
`after`|string|optional| `stepKey` of preceding action.

Diff for: etc/di.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<!-- Entity value gets replaced in Dom.php before reading $xml -->
1010
<!DOCTYPE config [
11-
<!ENTITY commonTestActions "acceptPopup|actionGroup|amOnPage|amOnUrl|amOnSubdomain|appendField|assertArrayIsSortasserted|assertElementContainsAttribute|attachFile|cancelPopup|checkOption|clearField|click|clickWithLeftButton|clickWithRightButton|closeAdminNotification|closeTab|comment|conditionalClick|createData|deleteData|updateData|getData|dontSee|dontSeeJsError|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInFormFields|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatMoney|generateDate|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|magentoCLI|magentoCron|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|mSetLocale|mResetLocale|openNewTab|pause|parseFloat|pressKey|reloadPage|resetCookie|submitForm|resizeWindow|saveSessionSnapshot|scrollTo|scrollToTopOfPage|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|submitForm|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForPwaElementNotVisible|waitForPwaElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText|assertArrayHasKey|assertArrayNotHasKey|assertContains|assertStringContainsString|assertStringContainsStringIgnoringCase|assertCount|assertEmpty|assertEquals|assertFalse|assertFileExists|assertFileNotExists|assertGreaterOrEquals|assertGreaterThan|assertGreaterThanOrEqual|assertInstanceOf|assertIsEmpty|assertLessOrEquals|assertLessThan|assertLessThanOrEqual|assertNotContains|assertStringNotContainsString|assertStringNotContainsStringIgnoringCase|assertNotEmpty|assertNotEquals|assertNotInstanceOf|assertNotNull|assertNotRegExp|assertNotSame|assertNull|assertRegExp|assertSame|assertStringStartsNotWith|assertStringStartsWith|assertTrue|expectException|fail|dontSeeFullUrlEquals|dontSee|dontSeeFullUrlMatches|dontSeeInFullUrl|seeFullUrlEquals|seeFullUrlMatches|seeInFullUrl|grabFromFullUrl|helper|assertEqualsWithDelta|assertEqualsCanonicalizing|assertEqualsIgnoringCase|assertNotEqualsWithDelta|assertNotEqualsCanonicalizing|assertNotEqualsIgnoringCase">
11+
<!ENTITY commonTestActions "acceptPopup|actionGroup|amOnPage|amOnUrl|amOnSubdomain|appendField|assertArrayIsSortasserted|assertElementContainsAttribute|attachFile|cancelPopup|checkOption|clearField|click|clickWithLeftButton|clickWithRightButton|closeAdminNotification|closeTab|comment|conditionalClick|createData|deleteData|updateData|getData|dontSee|dontSeeJsError|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInFormFields|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|entity|executeJS|fillField|formatCurrency|generateDate|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|magentoCLI|magentoCron|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|mSetLocale|mResetLocale|openNewTab|pause|parseFloat|pressKey|reloadPage|resetCookie|submitForm|resizeWindow|saveSessionSnapshot|scrollTo|scrollToTopOfPage|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|submitForm|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForPwaElementNotVisible|waitForPwaElementVisible|waitForJS|waitForLoadingMaskToDisappear|waitForPageLoad|waitForText|assertArrayHasKey|assertArrayNotHasKey|assertContains|assertStringContainsString|assertStringContainsStringIgnoringCase|assertCount|assertEmpty|assertEquals|assertFalse|assertFileExists|assertFileNotExists|assertGreaterOrEquals|assertGreaterThan|assertGreaterThanOrEqual|assertInstanceOf|assertIsEmpty|assertLessOrEquals|assertLessThan|assertLessThanOrEqual|assertNotContains|assertStringNotContainsString|assertStringNotContainsStringIgnoringCase|assertNotEmpty|assertNotEquals|assertNotInstanceOf|assertNotNull|assertNotRegExp|assertNotSame|assertNull|assertRegExp|assertSame|assertStringStartsNotWith|assertStringStartsWith|assertTrue|expectException|fail|dontSeeFullUrlEquals|dontSee|dontSeeFullUrlMatches|dontSeeInFullUrl|seeFullUrlEquals|seeFullUrlMatches|seeInFullUrl|grabFromFullUrl|helper|assertEqualsWithDelta|assertEqualsCanonicalizing|assertEqualsIgnoringCase|assertNotEqualsWithDelta|assertNotEqualsCanonicalizing|assertNotEqualsIgnoringCase">
1212
]>
1313

1414
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../src/Magento/FunctionalTestingFramework/ObjectManager/etc/config.xsd">

Diff for: src/Magento/FunctionalTestingFramework/Module/MagentoWebDriver.php

+16-9
Original file line numberDiff line numberDiff line change
@@ -452,19 +452,26 @@ public function waitForLoadingMaskToDisappear($timeout = null)
452452
}
453453

454454
/**
455-
* @param float $money
455+
* Format input to specified currency in locale specified
456+
* @link https://php.net/manual/en/numberformatter.formatcurrency.php
457+
*
458+
* @param float $value
456459
* @param string $locale
457-
* @return array
460+
* @param string $currency
461+
* @return string
462+
* @throws TestFrameworkException
458463
*/
459-
public function formatMoney(float $money, $locale = 'en_US.UTF-8')
464+
public function formatCurrency(float $value, $locale, $currency)
460465
{
461-
$this->mSetLocale(LC_MONETARY, $locale);
462-
$money = money_format('%.2n', $money);
463-
$this->mResetLocale();
464-
$prefix = substr($money, 0, 1);
465-
$number = substr($money, 1);
466+
$formatter = \NumberFormatter::create($locale, \NumberFormatter::CURRENCY);
467+
if ($formatter && !empty($formatter)) {
468+
$result = $formatter->formatCurrency($value, $currency);
469+
if ($result) {
470+
return $result;
471+
}
472+
}
466473

467-
return ['prefix' => $prefix, 'number' => $number];
474+
throw new TestFrameworkException('Invalid attributes used in formatCurrency.');
468475
}
469476

470477
/**

Diff for: src/Magento/FunctionalTestingFramework/Test/Objects/ActionGroupObject.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ActionGroupObject
2424
"executeJS",
2525
"magentoCLI",
2626
"generateDate",
27-
"formatMoney",
27+
"formatCurrency",
2828
"deleteData",
2929
"getData",
3030
"updateData",

0 commit comments

Comments
 (0)