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); } } }
public async Task VerifySortingOptions(SortingOption sortingOption) { //Fail all tests if the DefaultSortingOption has changed Assert.AreEqual(MobileSortingService.DefaultSortingOption, SortingOption.Views); //Arrange string floatingActionTextButtonStatistic1Text, floatingActionTextButtonStatistic2Text, floatingActionTextButtonStatistic3Text; Repository finalFirstRepository, finalSecondTopRepository, finalLastRepository; Repository initialFirstRepository = RepositoryPage.VisibleCollection.First(); Repository initialSecondTopRepository = RepositoryPage.VisibleCollection.Skip(1).First(); Repository initialLastRepository = RepositoryPage.VisibleCollection.Last(); //Act await RepositoryPage.SetSortingOption(sortingOption).ConfigureAwait(false); floatingActionTextButtonStatistic1Text = RepositoryPage.InformationButtonStatistic1Text; floatingActionTextButtonStatistic2Text = RepositoryPage.InformationButtonStatistic2Text; floatingActionTextButtonStatistic3Text = RepositoryPage.InformationButtonStatistic3Text; RepositoryPage.TapInformationButton(); //Assert finalFirstRepository = RepositoryPage.VisibleCollection.First(); finalSecondTopRepository = RepositoryPage.VisibleCollection.Skip(1).First(); finalLastRepository = RepositoryPage.VisibleCollection.Last(); if (initialFirstRepository.IsTrending == initialSecondTopRepository.IsTrending) { Assert.GreaterOrEqual(initialFirstRepository.TotalViews, initialSecondTopRepository.TotalViews); } Assert.GreaterOrEqual(initialFirstRepository.TotalViews, initialLastRepository.TotalViews); var floatingActionTextButtonStatistic1Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic1); var floatingActionTextButtonStatistic2Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic2); var floatingActionTextButtonStatistic3Text_Expected = StatisticsService.GetFloatingActionTextButtonText(MobileSortingService.GetSortingCategory(sortingOption), RepositoryPage.VisibleCollection, FloatingActionButtonType.Statistic3); Assert.AreEqual(floatingActionTextButtonStatistic1Text_Expected, floatingActionTextButtonStatistic1Text); Assert.AreEqual(floatingActionTextButtonStatistic2Text_Expected, floatingActionTextButtonStatistic2Text); Assert.AreEqual(floatingActionTextButtonStatistic3Text_Expected, floatingActionTextButtonStatistic3Text); switch (sortingOption) { case SortingOption.Views when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.LessOrEqual(finalFirstRepository.TotalViews, finalSecondTopRepository.TotalViews); break; case SortingOption.Views: Assert.LessOrEqual(finalSecondTopRepository.TotalViews, finalLastRepository.TotalViews); break; case SortingOption.Stars when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.StarCount, finalSecondTopRepository.StarCount); break; case SortingOption.Stars: Assert.GreaterOrEqual(finalSecondTopRepository.StarCount, finalLastRepository.StarCount); break; case SortingOption.Forks when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.ForkCount, finalSecondTopRepository.ForkCount); break; case SortingOption.Forks: Assert.GreaterOrEqual(finalSecondTopRepository.ForkCount, finalLastRepository.ForkCount); break; case SortingOption.Issues when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.IssuesCount, finalSecondTopRepository.IssuesCount); break; case SortingOption.Issues: Assert.GreaterOrEqual(finalSecondTopRepository.IssuesCount, finalLastRepository.IssuesCount); break; case SortingOption.Clones when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalClones, finalSecondTopRepository.TotalClones); break; case SortingOption.Clones: Assert.GreaterOrEqual(finalSecondTopRepository.TotalClones, finalLastRepository.TotalClones); break; case SortingOption.UniqueClones when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalUniqueClones, finalSecondTopRepository.TotalUniqueClones); break; case SortingOption.UniqueClones: Assert.GreaterOrEqual(finalSecondTopRepository.TotalUniqueClones, finalLastRepository.TotalUniqueClones); break; case SortingOption.UniqueViews when finalFirstRepository.IsTrending == finalSecondTopRepository.IsTrending: Assert.GreaterOrEqual(finalFirstRepository.TotalUniqueViews, finalSecondTopRepository.TotalUniqueViews); break; case SortingOption.UniqueViews: Assert.GreaterOrEqual(finalSecondTopRepository.TotalUniqueViews, finalLastRepository.TotalUniqueViews); break; default: throw new NotSupportedException(); } ; }