public void VerifyStoreRequest(ReviewAction firstAction, ReviewAction secondAction) { //Arrange string firstTitleText, secondTitleText, firstNoButtonText, secondNoButtonText, firstYesButtonText, secondYesButtonText; //Act ReferringSitesPage.TriggerReviewRequest(); ReferringSitesPage.WaitForReviewRequest(); firstTitleText = ReferringSitesPage.StoreRatingRequestTitleLabelText; firstNoButtonText = ReferringSitesPage.StoreRatingRequestNoButtonText; firstYesButtonText = ReferringSitesPage.StoreRatingRequestYesButtonText; PerformReviewAction(firstAction); secondTitleText = ReferringSitesPage.StoreRatingRequestTitleLabelText; secondNoButtonText = ReferringSitesPage.StoreRatingRequestNoButtonText; secondYesButtonText = ReferringSitesPage.StoreRatingRequestYesButtonText; //Assert Assert.AreEqual(ReviewServiceConstants.TitleLabel_EnjoyingGitTrends, firstTitleText); Assert.AreEqual(ReviewServiceConstants.NoButton_NotReally, firstNoButtonText); Assert.AreEqual(ReviewServiceConstants.YesButton_Yes, firstYesButtonText); Assert.AreEqual(ReviewServiceConstants.NoButton_NoThanks, secondNoButtonText); Assert.AreEqual(ReviewServiceConstants.YesButton_OkSure, secondYesButtonText); if (firstAction is ReviewAction.NoButtonTapped) { Assert.AreEqual(ReviewServiceConstants.TitleLabel_Feedback, secondTitleText); } else { Assert.AreEqual(ReferringSitesPage.ExpectedAppStoreRequestTitle, secondTitleText); } //Act PerformReviewAction(secondAction); if (secondAction is ReviewAction.NoButtonTapped) { ReferringSitesPage.WaitForNoReviewRequest(); } }
public async Task UpdateStateTest(ReviewAction firstReviewAction, ReviewAction secondReviewAction, ReviewRequest expectedReviewRequest) { //Arrange ReviewRequest reviewRequest; bool didReviewCompletedFire = false; var reviewCompletedTCS = new TaskCompletionSource <ReviewRequest>(); ReviewState reviewState_Initial, reviewState_AfterFirstAction, reviewState_AfterSecondAction; string yesButtonText_Initial, yesButtonText_AfterFirstAction, yesButtonText_AfterSecondAction; string noButtonText_Initial, noButtonText_AfterFirstAction, noButtonText_AfterSecondAction; string titleText_Initial, titleText_AfterFirstAction, titleText_AfterSecondAction; ReviewService.ReviewCompleted += HandleReviewCompleted; var reviewService = ServiceCollection.ServiceProvider.GetRequiredService <ReviewService>(); //Act reviewState_Initial = reviewService.CurrentState; yesButtonText_Initial = reviewService.YesButtonText; noButtonText_Initial = reviewService.NoButtonText; titleText_Initial = reviewService.StoreRatingRequestViewTitle; reviewService.UpdateState(firstReviewAction); reviewState_AfterFirstAction = reviewService.CurrentState; yesButtonText_AfterFirstAction = reviewService.YesButtonText; noButtonText_AfterFirstAction = reviewService.NoButtonText; titleText_AfterFirstAction = reviewService.StoreRatingRequestViewTitle; reviewService.UpdateState(secondReviewAction); reviewState_AfterSecondAction = reviewService.CurrentState; yesButtonText_AfterSecondAction = reviewService.YesButtonText; noButtonText_AfterSecondAction = reviewService.NoButtonText; titleText_AfterSecondAction = reviewService.StoreRatingRequestViewTitle; reviewRequest = await reviewCompletedTCS.Task.ConfigureAwait(false); //Assert Assert.IsTrue(didReviewCompletedFire); Assert.AreEqual(ReviewState.Greeting, reviewState_Initial); Assert.AreEqual(ReviewServiceConstants.YesButton_Yes, yesButtonText_Initial); Assert.AreEqual(ReviewServiceConstants.NoButton_NotReally, noButtonText_Initial); Assert.AreEqual(ReviewServiceConstants.TitleLabel_EnjoyingGitTrends, titleText_Initial); if (firstReviewAction is ReviewAction.NoButtonTapped) { Assert.AreEqual(ReviewState.RequestFeedback, reviewState_AfterFirstAction); Assert.AreEqual(ReviewServiceConstants.YesButton_OkSure, yesButtonText_AfterFirstAction); Assert.AreEqual(ReviewServiceConstants.NoButton_NoThanks, noButtonText_AfterFirstAction); Assert.AreEqual(ReviewServiceConstants.TitleLabel_Feedback, titleText_AfterFirstAction); } else { Assert.AreEqual(ReviewState.RequestReview, reviewState_AfterFirstAction); Assert.AreEqual(ReviewServiceConstants.YesButton_OkSure, yesButtonText_AfterFirstAction); Assert.AreEqual(ReviewServiceConstants.NoButton_NoThanks, noButtonText_AfterFirstAction); Assert.AreEqual(AppStoreConstants.RatingRequest, titleText_AfterFirstAction); } Assert.AreEqual(ReviewState.Greeting, reviewState_AfterSecondAction); Assert.AreEqual(ReviewServiceConstants.YesButton_Yes, yesButtonText_AfterSecondAction); Assert.AreEqual(ReviewServiceConstants.NoButton_NotReally, noButtonText_AfterSecondAction); Assert.AreEqual(ReviewServiceConstants.TitleLabel_EnjoyingGitTrends, titleText_AfterSecondAction); Assert.AreEqual(expectedReviewRequest, reviewRequest); void HandleReviewCompleted(object?sender, ReviewRequest e) { ReviewService.ReviewCompleted -= HandleReviewCompleted; didReviewCompletedFire = true; reviewCompletedTCS.SetResult(e); } }