示例#1
0
        public async Task VerifyLanguagePicker()
        {
            //Arrange
            string?settingsButtonText = null, sortButtonText = null;
            string?preferredLanguage_Initial, preferredLanguage_Final;
            string gitHubNameText, gitHubAliasText, tryDemoButtonText, loginTitleLabelText_Disconnect, loginTitleLabelText_Connect,
                   themeTitleLabelText, languageTitleLabelText, settingsPageTitle, copyrightLabelTitleLabelText, registerForNotificationsTitleLabelText,
                   preferredChartsTitleTitleLabelText, preferredChartsAllTitleLabelText, preferredChartsNoUniquesTitleLabelText, preferredChartsOnlyUniquesTitleLabelText;


            foreach (var preferredLanguageKeyValuePair in CultureConstants.CulturePickerOptions.Reverse())
            {
                //Act
                preferredLanguage_Initial = SettingsPage.PreferredLanguage;

                await SettingsPage.SelectLanguage(preferredLanguageKeyValuePair.Value).ConfigureAwait(false);

                SettingsPage.TapLoginButton();
                tryDemoButtonText           = SettingsPage.TryDemoButtonText;
                loginTitleLabelText_Connect = SettingsPage.LoginTitleText;

                await login().ConfigureAwait(false);

                preferredLanguage_Final = SettingsPage.PreferredLanguage;

                settingsPageTitle                      = SettingsPage.PageTitle;
                gitHubNameText                         = SettingsPage.GitHubNameLabelText;
                gitHubAliasText                        = SettingsPage.GitHubAliasLabelText;
                themeTitleLabelText                    = SettingsPage.ThemeTitleLabelText;
                languageTitleLabelText                 = SettingsPage.LangageTitleLabelText;
                loginTitleLabelText_Disconnect         = SettingsPage.LoginTitleText;
                copyrightLabelTitleLabelText           = SettingsPage.CopyrightLabelText;
                preferredChartsTitleTitleLabelText     = SettingsPage.PreferredChartLabelText;
                registerForNotificationsTitleLabelText = SettingsPage.RegisterForNotificationsTitleLabelText;

                preferredChartsAllTitleLabelText         = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.All];
                preferredChartsNoUniquesTitleLabelText   = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.NoUniques];
                preferredChartsOnlyUniquesTitleLabelText = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.JustUniques];

                SettingsPage.TapBackButton();

                if (App is AndroidApp)
                {
                    sortButtonText     = RepositoryPage.GetSortButtonText();
                    settingsButtonText = RepositoryPage.GetSettingsButtonText();
                }

                //Assert
                Assert.AreEqual(PageTitles.RepositoryPage, RepositoryPage.PageTitle);

                Assert.AreNotEqual(preferredLanguage_Final, preferredLanguage_Initial);
                Assert.AreEqual(preferredLanguage_Final, string.IsNullOrWhiteSpace(preferredLanguageKeyValuePair.Key) ? null : preferredLanguageKeyValuePair.Key);

                Assert.AreEqual(PageTitles.SettingsPage, settingsPageTitle);
                Assert.AreEqual(SettingsPageConstants.Theme, themeTitleLabelText);
                Assert.AreEqual(GitHubLoginButtonConstants.TryDemo, tryDemoButtonText);
                Assert.AreEqual(SettingsPageConstants.Language, languageTitleLabelText);
                Assert.AreEqual(GitHubLoginButtonConstants.Disconnect, loginTitleLabelText_Disconnect);
                Assert.AreEqual(GitHubLoginButtonConstants.ConnectToGitHub, loginTitleLabelText_Connect);
                Assert.AreEqual(SettingsPageConstants.RegisterForNotifications, registerForNotificationsTitleLabelText);
                Assert.AreEqual(SettingsPageConstants.PreferredChartSettingsLabelText, preferredChartsTitleTitleLabelText);

                Assert.IsTrue(copyrightLabelTitleLabelText.Contains(SettingsPageConstants.CreatedBy));

                Assert.AreEqual(TrendsChartTitleConstants.All, preferredChartsAllTitleLabelText);
                Assert.AreEqual(TrendsChartTitleConstants.NoUniques, preferredChartsNoUniquesTitleLabelText);
                Assert.AreEqual(TrendsChartTitleConstants.JustUniques, preferredChartsOnlyUniquesTitleLabelText);

                if (UserType is UserType.Demo)
                {
                    Assert.AreEqual(DemoUserConstants.Name, gitHubNameText);
                    Assert.AreEqual("@" + DemoUserConstants.Alias, gitHubAliasText);
                }

                if (App is AndroidApp)
                {
                    Assert.AreEqual(PageTitles.SettingsPage, settingsButtonText);
                    Assert.AreEqual(RepositoryPageConstants.SortToolbarItemText, sortButtonText);
                }

                Assert.AreEqual(LoggedInUserName, gitHubNameText);
                Assert.AreEqual("@" + LoggedInUserAlias, gitHubAliasText);

                //Act
                RepositoryPage.TapSettingsButton();
                await SettingsPage.WaitForPageToLoad().ConfigureAwait(false);
            }
            ;

            async Task login()
            {
                if (UserType is UserType.Demo)
                {
                    SettingsPage.TapTryDemoButton();
                }
                else if (UserType is UserType.LoggedIn)
                {
                    await LoginToGitHub().ConfigureAwait(false);
                }
            }
        }