Skip to content

Commit ccdc23a

Browse files
committed
MQE-2501: PHP 7.4 Upgrade in MFTF 2.x
1 parent 0bef784 commit ccdc23a

File tree

14 files changed

+150
-52
lines changed

14 files changed

+150
-52
lines changed

bin/functional

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ echo "==============================="
99
bin/mftf build:project
1010
bin/mftf run:test DeprecatedDevDocsTest -f
1111
bin/mftf run:test DevDocsTest -f
12+
bin/mftf run:test FormatCurrencyTest -f
Lines changed: 52 additions & 0 deletions
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>

dev/tests/static/Magento/Sniffs/Commenting/FunctionCommentSniff.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ protected function processThrows(File $phpcsFile, $stackPtr, $commentStart)
214214
}
215215

216216
// Starts with a capital letter and ends with a fullstop.
217-
$firstChar = $comment{0};
217+
$firstChar = $comment[0];
218218
if (strtoupper($firstChar) !== $firstChar) {
219219
$error = '@throws tag comment must start with a capital letter';
220220
$phpcsFile->addError($error, ($tag + 2), 'ThrowsNotCapital');
@@ -437,7 +437,7 @@ protected function processParams(File $phpcsFile, $stackPtr, $commentStart)
437437
}//end if
438438
}//end foreach
439439

440-
$suggestedType = implode($suggestedTypeNames, '|');
440+
$suggestedType = implode('|', $suggestedTypeNames);
441441
if ($param['type'] !== $suggestedType) {
442442
$error = 'Expected "%s" but found "%s" for parameter type';
443443
$data = array(

dev/tests/unit/Util/TestLoggingUtil.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public function validateMockLogStatmentRegex($type, $regex, $context)
9393
$records = $this->testLogHandler->getRecords();
9494
$record = $records[count($records)-1]; // we assume the latest record is what requires validation
9595
$this->assertEquals(strtoupper($type), $record['level_name']);
96-
$this->assertRegExp($regex, $record['message']);
96+
$this->assertMatchesRegularExpression($regex, $record['message']);
9797
$this->assertEquals($context, $record['context']);
9898
}
9999

dev/tests/verification/Resources/ActionGroupWithStepKeyReferences.txt

Lines changed: 1 addition & 1 deletion
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

dev/tests/verification/TestModule/ActionGroup/FunctionalActionGroup.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<executeJS function="{$action3}" stepKey="action3"/>
5757
<magentoCLI command="{$action4}" arguments="&quot;stuffHere&quot;" stepKey="action4"/>
5858
<generateDate date="{$action5}" format="H:i:s" stepKey="action5"/>
59-
<formatMoney userInput="{$action6}" stepKey="action6"/>
59+
<formatCurrency userInput="{$action6}" locale="en_CA" currency="USD" stepKey="action6"/>
6060
<deleteData createDataKey="{$action7}" stepKey="action7"/>
6161
<getData entity="{$action8}" stepKey="action8"/>
6262
<updateData entity="{$action9}" stepKey="action9" createDataKey="1"/>

dev/tests/verification/TestModule/ActionGroup/XmlDuplicateActionGroup.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
-->
88
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9-
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/actionGroupSchema.xsd">
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
1010
<actionGroup name="xmlDuplicateActionGroup">
1111
<acceptPopup stepKey="ap1"/>
1212
<acceptPopup stepKey="ap2"/>
@@ -84,8 +84,8 @@
8484
<executeJS function="1" stepKey="execJS2"/>
8585
<fillField stepKey="fill1"/>
8686
<fillField stepKey="fill21"/>
87-
<formatMoney stepKey="frmtmoney1"/>
88-
<formatMoney stepKey="frmtmoney12"/>
87+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
88+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="USD" stepKey="frmtmoney12"/>
8989
<getData entity="1" stepKey="getdata1"/>
9090
<getData entity="1" stepKey="getdata12"/>
9191
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>

dev/tests/verification/TestModule/Test/XmlDuplicateTest.xml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
* See COPYING.txt for license details.
66
*/
77
-->
8-
98
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10-
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
1110
<test name="XmlDuplicateTest">
1211
<before>
1312
<acceptPopup stepKey="ap1"/>
@@ -88,8 +87,8 @@
8887
<executeJS function="1" stepKey="execJS2"/>
8988
<fillField stepKey="fill1"/>
9089
<fillField stepKey="fill21"/>
91-
<formatMoney stepKey="frmtmoney1"/>
92-
<formatMoney stepKey="frmtmoney12"/>
90+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
91+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
9392
<getData entity="1" stepKey="getdata1"/>
9493
<getData entity="1" stepKey="getdata12"/>
9594
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>
@@ -304,8 +303,8 @@
304303
<executeJS function="1" stepKey="execJS2"/>
305304
<fillField stepKey="fill1"/>
306305
<fillField stepKey="fill21"/>
307-
<formatMoney stepKey="frmtmoney1"/>
308-
<formatMoney stepKey="frmtmoney12"/>
306+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
307+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
309308
<getData entity="1" stepKey="getdata1"/>
310309
<getData entity="1" stepKey="getdata12"/>
311310
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>
@@ -519,8 +518,8 @@
519518
<executeJS function="1" stepKey="execJS2"/>
520519
<fillField stepKey="fill1"/>
521520
<fillField stepKey="fill21"/>
522-
<formatMoney stepKey="frmtmoney1"/>
523-
<formatMoney stepKey="frmtmoney12"/>
521+
<formatCurrency userInput="1234.567890" locale="de_DE" currency="EUR" stepKey="frmtmoney1"/>
522+
<formatCurrency userInput="1234.567890" locale="en_US" currency="EUR" stepKey="frmtmoney12"/>
524523
<getData entity="1" stepKey="getdata1"/>
525524
<getData entity="1" stepKey="getdata12"/>
526525
<grabAttributeFrom selector="1" stepKey="grabattribute1"/>

docs/test/actions.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,12 +1032,15 @@ Attribute|Type|Use|Description
10321032
<fillField userInput="Sample text" selector="input#myfield" stepKey="fillField"/>
10331033
```
10341034

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

10371039
Attribute|Type|Use|Description
10381040
---|---|---|---
1039-
`userInput`|string|optional| Value for the money form field.
1040-
`locale`|string|optional| The PHP locale value for the store.
1041+
`userInput`|string|required| Number to be formatted.
1042+
`locale`|string|required| The locale to format to.
1043+
`currency`|string|required| The 3-letter ISO 4217 currency code indicating the currency to use.
10411044
`stepKey`|string|required| A unique identifier of the action.
10421045
`before`|string|optional| `stepKey` of action that must be executed next.
10431046
`after`|string|optional| `stepKey` of preceding action.

etc/di.xml

Lines changed: 1 addition & 1 deletion
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|assertArrayIsSorted|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|executeInSelenium|fillField|formatMoney|generateDate|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|magentoCLI|magentoCron|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|mSetLocale|mResetLocale|openNewTab|pauseExecution|parseFloat|performOn|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|assertCount|assertEmpty|assertEquals|assertFalse|assertFileExists|assertFileNotExists|assertGreaterOrEquals|assertGreaterThan|assertGreaterThanOrEqual|assertInstanceOf|assertInternalType|assertIsEmpty|assertLessOrEquals|assertLessThan|assertLessThanOrEqual|assertNotContains|assertNotEmpty|assertNotEquals|assertNotInstanceOf|assertNotNull|assertNotRegExp|assertNotSame|assertNull|assertRegExp|assertSame|assertStringStartsNotWith|assertStringStartsWith|assertTrue|expectException|fail|dontSeeFullUrlEquals|dontSee|dontSeeFullUrlMatches|dontSeeInFullUrl|seeFullUrlEquals|seeFullUrlMatches|seeInFullUrl|grabFromFullUrl">
11+
<!ENTITY commonTestActions "acceptPopup|actionGroup|amOnPage|amOnUrl|amOnSubdomain|appendField|assertArrayIsSorted|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|executeInSelenium|fillField|formatCurrency|generateDate|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|magentoCLI|magentoCron|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|mSetLocale|mResetLocale|openNewTab|pauseExecution|parseFloat|performOn|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|assertCount|assertEmpty|assertEquals|assertFalse|assertFileExists|assertFileNotExists|assertGreaterOrEquals|assertGreaterThan|assertGreaterThanOrEqual|assertInstanceOf|assertInternalType|assertIsEmpty|assertLessOrEquals|assertLessThan|assertLessThanOrEqual|assertNotContains|assertNotEmpty|assertNotEquals|assertNotInstanceOf|assertNotNull|assertNotRegExp|assertNotSame|assertNull|assertRegExp|assertSame|assertStringStartsNotWith|assertStringStartsWith|assertTrue|expectException|fail|dontSeeFullUrlEquals|dontSee|dontSeeFullUrlMatches|dontSeeInFullUrl|seeFullUrlEquals|seeFullUrlMatches|seeInFullUrl|grabFromFullUrl">
1212
]>
1313

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

src/Magento/FunctionalTestingFramework/Module/MagentoWebDriver.php

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
*
5050
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
5151
* @SuppressWarnings(PHPMD.ExcessivePublicCount)
52+
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
5253
*/
5354
class MagentoWebDriver extends WebDriver
5455
{
@@ -452,21 +453,26 @@ public function waitForLoadingMaskToDisappear($timeout = null)
452453
}
453454

454455
/**
455-
* @param float $money
456+
* Format input to specified currency in locale specified
457+
* @link https://php.net/manual/en/numberformatter.formatcurrency.php
458+
*
459+
* @param float $value
456460
* @param string $locale
457-
* @return array
461+
* @param string $currency
462+
* @return string
463+
* @throws TestFrameworkException
458464
*/
459-
public function formatMoney(float $money, $locale = 'en_US.UTF-8')
465+
public function formatCurrency(float $value, $locale, $currency)
460466
{
461-
$this->mSetLocale(LC_MONETARY, $locale);
462-
// @codingStandardsIgnoreStart
463-
$money = money_format('%.2n', $money);
464-
// @codingStandardsIgnoreEnd
465-
$this->mResetLocale();
466-
$prefix = substr($money, 0, 1);
467-
$number = substr($money, 1);
468-
469-
return ['prefix' => $prefix, 'number' => $number];
467+
$formatter = \NumberFormatter::create($locale, \NumberFormatter::CURRENCY);
468+
if ($formatter && !empty($formatter)) {
469+
$result = $formatter->formatCurrency($value, $currency);
470+
if ($result) {
471+
return $result;
472+
}
473+
}
474+
475+
throw new TestFrameworkException('Invalid attributes used in formatCurrency.');
470476
}
471477

472478
/**

src/Magento/FunctionalTestingFramework/Test/Objects/ActionGroupObject.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ActionGroupObject
2525
"executeJS",
2626
"magentoCLI",
2727
"generateDate",
28-
"formatMoney",
28+
"formatCurrency",
2929
"deleteData",
3030
"getData",
3131
"updateData",

src/Magento/FunctionalTestingFramework/Test/etc/Actions/customActions.xsd

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<xs:element type="closeAdminNotificationType" name="closeAdminNotification" minOccurs="0" maxOccurs="unbounded"/>
1717
<xs:element type="searchAndMultiSelectOptionType" name="searchAndMultiSelectOption" minOccurs="0" maxOccurs="unbounded"/>
1818
<xs:element type="selectMultipleOptionsType" name="selectMultipleOptions" minOccurs="0" maxOccurs="unbounded"/>
19-
<xs:element type="formatMoneyType" name="formatMoney" minOccurs="0" maxOccurs="unbounded"/>
19+
<xs:element type="formatCurrencyType" name="formatCurrency" minOccurs="0" maxOccurs="unbounded"/>
2020
<xs:element type="parseFloatType" name="parseFloat" minOccurs="0" maxOccurs="unbounded"/>
2121
<xs:element type="mSetLocaleType" name="mSetLocale" minOccurs="0" maxOccurs="unbounded"/>
2222
<xs:element type="mResetLocaleType" name="mResetLocale" minOccurs="0" maxOccurs="unbounded"/>
@@ -158,25 +158,29 @@
158158
<xs:attributeGroup ref="commonActionAttributes"/>
159159
</xs:complexType>
160160

161-
<xs:complexType name="formatMoneyType">
161+
<xs:complexType name="formatCurrencyType">
162162
<xs:annotation>
163163
<xs:documentation>
164-
Formats given input to given locale. Returns formatted string for test use.
164+
Format input to specified currency according to the locale specified. Returns formatted string for test use.
165+
Use NumberFormatter::formatCurrency(), see https://www.php.net/manual/en/numberformatter.formatcurrency.php
165166
</xs:documentation>
166167
</xs:annotation>
167-
<xs:simpleContent>
168-
<xs:extension base="xs:string">
169-
<xs:attribute ref="userInput"/>
170-
<xs:attribute type="xs:string" name="locale">
171-
<xs:annotation>
172-
<xs:documentation>
173-
Locale to format given input. Defaults to 'en_US.UTF-8' if nothing is given.
174-
</xs:documentation>
175-
</xs:annotation>
176-
</xs:attribute>
177-
<xs:attributeGroup ref="commonActionAttributes"/>
178-
</xs:extension>
179-
</xs:simpleContent>
168+
<xs:attribute type="xs:string" name="userInput" use="required"/>
169+
<xs:attribute type="xs:string" name="locale" use="required">
170+
<xs:annotation>
171+
<xs:documentation>
172+
Locale in which the input would be formatted (e.g. en_US).
173+
</xs:documentation>
174+
</xs:annotation>
175+
</xs:attribute>
176+
<xs:attribute type="xs:string" name="currency" use="required">
177+
<xs:annotation>
178+
<xs:documentation>
179+
The 3-letter ISO 4217 currency code indicating the currency to use.
180+
</xs:documentation>
181+
</xs:annotation>
182+
</xs:attribute>
183+
<xs:attributeGroup ref="commonActionAttributes"/>
180184
</xs:complexType>
181185

182186
<xs:complexType name="parseFloatType">

0 commit comments

Comments
 (0)