[TestMethod] //A value test public void GettingTopFiveReviews_WhenFiveExist_ReturnsFiveInDescendingOrder() { //Arrange var mockContext = Mock.Create <FruitFinderContext>().PrepareMock(); var reviews = new List <Review>(); var builder = new FruidFinderDalBuilder().WithContext(mockContext); var numberToInclude = 5; for (int i = 0; i < numberToInclude * 2; i++) { var review = builder.MakeReview(); review.VoteTally = i; reviews.Add(review); } mockContext.Reviews.Bind(reviews); var dal = builder.Build(); //Act var result = dal.GetTopReviews(numberToInclude); //Assert result.Count().Should().Be(numberToInclude, "the list should have " + numberToInclude + " reviews"); result.Should().BeInDescendingOrder(x => x.VoteTally, "the reviews should be in descending order by VoteTally"); }
[TestMethod] //An interaction test public void SavingAReview_WhenSuccessful_CallsContextSaveChanges() { //Arrange var mockContext = Mock.Create <FruitFinderContext>(); var builder = new FruidFinderDalBuilder().WithContext(mockContext); var dal = builder.Build(); Mock.Arrange(() => mockContext.SaveChanges()).OccursOnce(); var review = builder.MakeReview(); //Act dal.SaveReview(review); //Assert Mock.Assert(mockContext); }
[TestMethod] //A state test public void SavingAReview_WhenUpdatingIt_UpdatesTheUpdatedWhenAndBy() { //Arrange var builder = new FruidFinderDalBuilder(); var dal = builder.Build(); var dateTimeService = builder.GetDateTimeService(); var review = builder.MakeReview(); review.ReviewId = 1; review.UpdatedBy = FruidFinderDalBuilder.SecurityServiceUserId + 1; review.UpdatedWhen = dateTimeService.UtcNow().AddDays(-1); //Act dal.SaveReview(review); //Assert review.UpdatedWhen.ShouldBeEquivalentTo(dateTimeService.UtcNow(), "the updated date should be set to UtcNow when the review is saved"); review.UpdatedBy.ShouldBeEquivalentTo(FruidFinderDalBuilder.SecurityServiceUserId, "the updated by should be set to the current user when a review is saved"); }