From bd8aab33847425f4dcfd0d76ce310c918729b2fd Mon Sep 17 00:00:00 2001 From: Hongxu Xu Date: Thu, 12 Nov 2020 10:45:17 +0800 Subject: [PATCH] Add functional tests for currency fraction digit format --- .../UnitConverterOperatorsPanel.cs | 2 + .../UnitConverterPage.cs | 30 ++++++++++++ .../CurrencyConverterFunctionalTests.cs | 48 +++++++++++++++++++ 3 files changed, 80 insertions(+) diff --git a/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs b/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs index f2be9bdc..83d83224 100644 --- a/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs +++ b/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs @@ -13,5 +13,7 @@ namespace CalculatorUITestFramework public NumberPad NumberPad = new NumberPad(); public WindowsElement ClearButton => this.session.TryFindElementByAccessibilityId("ClearEntryButtonPos0"); public WindowsElement BackSpaceButton => this.session.TryFindElementByAccessibilityId("BackSpaceButtonSmall"); + public WindowsElement Units1 => this.session.TryFindElementByAccessibilityId("Units1"); + public WindowsElement Units2 => this.session.TryFindElementByAccessibilityId("Units2"); } } diff --git a/src/CalculatorUITestFramework/UnitConverterPage.cs b/src/CalculatorUITestFramework/UnitConverterPage.cs index e3984cf9..011f642b 100644 --- a/src/CalculatorUITestFramework/UnitConverterPage.cs +++ b/src/CalculatorUITestFramework/UnitConverterPage.cs @@ -64,5 +64,35 @@ namespace CalculatorUITestFramework } } + /// + /// Ensure Units1 and Units2 are the same + /// + public void EnsureSameUnitsAreSelected() + { + SelectUnits1("United States - Dollar"); + SelectUnits2("United States - Dollar"); + } + + /// + /// Select value in Units1 ComboBox + /// + /// Value in ComboBox Units1 + public void SelectUnits1(string value) + { + UnitConverterOperators.Units1.SendKeys(OpenQA.Selenium.Keys.Home); + UnitConverterOperators.Units1.SendKeys(value); + UnitConverterOperators.Units1.SendKeys(OpenQA.Selenium.Keys.Enter); + } + + /// + /// Select value in Units2 ComboBox + /// + /// Value in ComboBox Units2 + public void SelectUnits2(string value) + { + UnitConverterOperators.Units2.SendKeys(OpenQA.Selenium.Keys.Home); + UnitConverterOperators.Units2.SendKeys(value); + UnitConverterOperators.Units2.SendKeys(OpenQA.Selenium.Keys.Enter); + } } } diff --git a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs index fc8d669e..0bd3b921 100644 --- a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs +++ b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs @@ -42,6 +42,7 @@ namespace CalculatorUITests CalculatorApp.EnsureCalculatorHasFocus(); page.EnsureCalculatorIsCurrencyMode(); page.EnsureCalculatorResultTextIsZero(); + page.EnsureSameUnitsAreSelected(); } [TestCleanup] @@ -50,6 +51,23 @@ namespace CalculatorUITests page.ClearAll(); } + private string NormalizeCurrencyText(string realValue, int fractionDigits) + { + if (!realValue.Contains('.')) return realValue; + + var parts = realValue.Split('.'); + if (parts[1].Length < fractionDigits) + { + parts[1] += new string('0', fractionDigits - parts[1].Length); + } + else + { + parts[1] = parts[1].Substring(0, fractionDigits); + } + + return $"{parts[0]}.{parts[1]}".TrimEnd('.'); + } + #region Basic UI Functionality via Mouse Input Tests /// /// These automated tests verify clicking each of the buttons in the Calculator UI and getting an expected result @@ -129,6 +147,36 @@ namespace CalculatorUITests Assert.AreEqual("0", page.UnitConverterResults.GetCalculationResult2Text()); //verifies Backspace button clicks } + /// + /// These automated tests verify different currencies use different formatter that the display value should have expected fraction digits + /// Via mouse input, all basic UI functionality is checked + /// + [TestMethod] + [DataRow("Japan - Yen", 0)] + [DataRow("Korea - Won", 0)] + [DataRow("Tunisia - Dinar", 3)] + [DataRow("Jordan - Dinar", 3)] + [DataRow("China - Yuan", 2)] + [Priority(0)] + public void MouseInput_SelectCurrencyEnterInputWithDecimalAndCheckTheFractionDigits(string currency, int fractionDigits) + { + //Verifies fraction digits in given currency + page.SelectUnits1(currency); + Assert.AreEqual(currency.Replace(" - ", " "), page.UnitConverterOperators.Units1.Text); // Text is the AccessibleName of Unit + page.UnitConverterOperators.NumberPad.Num2Button.Click(); + Assert.AreEqual(NormalizeCurrencyText("2", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 2 button + page.UnitConverterOperators.NumberPad.DecimalButton.Click(); + Assert.AreEqual(NormalizeCurrencyText("2.", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies decimal button + page.UnitConverterOperators.NumberPad.Num4Button.Click(); + Assert.AreEqual(NormalizeCurrencyText("2.4", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 4 button + page.UnitConverterOperators.NumberPad.Num3Button.Click(); + Assert.AreEqual(NormalizeCurrencyText("2.43", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 3 button + page.UnitConverterOperators.NumberPad.Num5Button.Click(); + Assert.AreEqual(NormalizeCurrencyText("2.435", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 5 button + page.UnitConverterOperators.NumberPad.Num6Button.Click(); + Assert.AreEqual(NormalizeCurrencyText("2.4356", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 6 button + } + #endregion } }