Exemplo n.º 1
0
        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]));
        }
Exemplo n.º 2
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));
        }
Exemplo n.º 3
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));
        }
Exemplo n.º 4
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));
        }
Exemplo n.º 5
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));
        }
Exemplo n.º 6
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));
        }