public void AddReviewToHighestDebtor_ContextWithoutReviewers_ExpectNoReviewerAvailableException() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); //Act //Assert Assert.Throws <NoReviewerAvailableException>(() => reviewService.AddReviewToHighestDebtor(new string[0])); }
AddReviewToHighestDebtor_FourReviewersTwoAvailableOneBusyAndOneSuspendedAndTwoAvailableAskForReview2Times_ExpectSuspendedWithZeroDebtBusyWithDebtOfTwoAndAvailableOnesWithZeroDebtAndTwoReviews() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); reviewService.RegisterReviewer("available-reviewer1"); reviewService.RegisterReviewer("available-reviewer2"); reviewService.RegisterReviewer("busy-reviewer"); reviewService.MakeReviewerBusy("busy-reviewer"); reviewService.RegisterReviewer("suspended-reviewer"); reviewService.SuspendReviewer("suspended-reviewer"); //Act reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer1" }); reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer2" }); reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer1" }); reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer2" }); //Assert var available1 = reviewService.GetReviewer("available-reviewer1"); Assert.That(available1.ReviewCount, Is.EqualTo(2)); Assert.That(available1.ReviewDebt, Is.EqualTo(0)); var available2 = reviewService.GetReviewer("available-reviewer1"); Assert.That(available2.ReviewCount, Is.EqualTo(2)); Assert.That(available2.ReviewDebt, Is.EqualTo(0)); var busyReviewer = reviewService.GetReviewer("busy-reviewer"); Assert.That(busyReviewer.ReviewCount, Is.EqualTo(0)); Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(2)); var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer"); Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(0)); Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(0)); }
public void AddReviewToHighestDebtor_OneReviewer_ExpectTheOnlyReviewerReturnedAndHisStatsUpdated() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); reviewService.RegisterReviewer("user-id"); //Act var assignedReviewer = reviewService.AddReviewToHighestDebtor(new string[0]); //Assert Assert.That(assignedReviewer.Id, Is.EqualTo("user-id")); Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(1)); Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0)); }
AddReviewToHighestDebtor_FourAvailableReviewersAndEveryOneAsksForReview3times_ExpectEveryReviewerHas3ReviewsAndZeroDebt() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); var reviewers = new[] { "reviewer1", "reviewer2", "reviewer3", "reviewer4" }; foreach (var reviewer in reviewers) { reviewService.RegisterReviewer(reviewer); } //Act for (var i = 0; i < 3; i++) { foreach (var reviewer in reviewers) { reviewService.AddReviewToHighestDebtor(new[] { reviewer }); } } //Assert var reviewer1 = reviewService.GetReviewer("reviewer1"); Assert.That(reviewer1.ReviewCount, Is.EqualTo(3)); Assert.That(reviewer1.ReviewDebt, Is.EqualTo(0)); var reviewer2 = reviewService.GetReviewer("reviewer2"); Assert.That(reviewer2.ReviewCount, Is.EqualTo(3)); Assert.That(reviewer2.ReviewDebt, Is.EqualTo(0)); var reviewer3 = reviewService.GetReviewer("reviewer3"); Assert.That(reviewer3.ReviewCount, Is.EqualTo(3)); Assert.That(reviewer3.ReviewDebt, Is.EqualTo(0)); var reviewer4 = reviewService.GetReviewer("reviewer4"); Assert.That(reviewer4.ReviewCount, Is.EqualTo(3)); Assert.That(reviewer4.ReviewDebt, Is.EqualTo(0)); }
AddReviewToHighestDebtor_FourReviewersOneAvailableOneBusyOneSuspendedAndOneAvailableButExcluded_ExpectReviewAssignedToAvailableReviewer() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); reviewService.RegisterReviewer("busy-reviewer"); reviewService.RegisterReviewer("suspended-reviewer"); reviewService.RegisterReviewer("available-reviewer"); reviewService.RegisterReviewer("excluded-reviewer"); reviewService.MakeReviewerBusy("busy-reviewer"); reviewService.SuspendReviewer("suspended-reviewer"); //Act var assignedReviewer = reviewService.AddReviewToHighestDebtor(new[] { "excluded-reviewer" }); //Assert Assert.That(assignedReviewer.Id, Is.EqualTo("available-reviewer")); Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(1)); Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0)); }
AddReviewToHighestDebtor_FourAvailableReviewersAndOneAsksForReviewSixTimes_ExpectTheOtherThreeToHaveEachTwoReviewsAndTheOneAskingForReviewsToBeInDebtByTwo() { //Arrange var reviewContext = new ReviewContext(); var reviewService = new ReviewService(reviewContext); reviewService.RegisterReviewer("code-spitting-individual"); reviewService.RegisterReviewer("reviewer1"); reviewService.RegisterReviewer("reviewer2"); reviewService.RegisterReviewer("reviewer3"); //Act for (var i = 0; i < 6; i++) { reviewService.AddReviewToHighestDebtor(new[] { "code-spitting-individual" }); } //Assert var onlyCodeWriter = reviewService.GetReviewer("code-spitting-individual"); Assert.That(onlyCodeWriter.ReviewDebt, Is.EqualTo(2)); Assert.That(onlyCodeWriter.ReviewCount, Is.EqualTo(0)); var reviewer1 = reviewService.GetReviewer("reviewer1"); Assert.That(reviewer1.ReviewDebt, Is.EqualTo(0)); Assert.That(reviewer1.ReviewCount, Is.EqualTo(2)); var reviewer2 = reviewService.GetReviewer("reviewer2"); Assert.That(reviewer2.ReviewDebt, Is.EqualTo(0)); Assert.That(reviewer2.ReviewCount, Is.EqualTo(2)); var reviewer3 = reviewService.GetReviewer("reviewer3"); Assert.That(reviewer3.ReviewDebt, Is.EqualTo(0)); Assert.That(reviewer3.ReviewCount, Is.EqualTo(2)); }