public void CallFactoryCreateBreweryRankMethodWithCorrectParamsOnceAndReturnItsValue() { var expectedName = this.Fixture.Create <string>(); var expectedBreweryRank = new Mock <IBreweryRank>(); var totalRankCount = 5; var beerRanks = new List <IBeerRank>(); var factory = new Mock <IRankFactory>(); for (int i = 0; i < totalRankCount; i++) { var reviews = this.Fixture.Create <List <BeerReview> >(); var mockedBeer = new Mock <IBeer>(); mockedBeer.Setup(b => b.Reviews) .Returns(reviews); var mockedRank = new Mock <IBeerRank>(); mockedRank.Setup(r => r.CompositeScore) .Returns(this.Fixture.Create <decimal>()); mockedRank.Setup(r => r.Beer) .Returns(mockedBeer.Object); beerRanks.Add(mockedRank.Object); } var expectedTotalScore = beerRanks.Sum(s => s.CompositeScore) / totalRankCount; var expectedTotalReviews = beerRanks.Sum(b => b.Beer.Reviews.Count); factory.Setup(f => f.CreateBreweryRank(expectedTotalScore, expectedTotalReviews, expectedName)) .Returns(expectedBreweryRank.Object); var strategy = new DoubleOverallScoreStrategy(factory.Object); var result = strategy.GetBreweryRank(beerRanks, expectedName); factory.Verify(f => f.CreateBreweryRank(expectedTotalScore, expectedTotalReviews, expectedName), Times.Once); Assert.AreSame(expectedBreweryRank.Object, result); }
public void ThrowArgumentNullException_WhenReviewsArgumentIsNull() { var factory = new Mock <IModelFactory>(); var beer = new Mock <IBeer>(); var strategy = new DoubleOverallScoreStrategy(factory.Object); Assert.Throws <ArgumentNullException>(() => strategy.GetBeerRank(null, beer.Object)); }
public void ThrowArgumentNullException_WhenBreweryNameArgumentIsNullOrEmpty(string nullOrEmpty) { var factory = new Mock <IModelFactory>(); var reviews = new Mock <IEnumerable <IBeerRank> >(); var strategy = new DoubleOverallScoreStrategy(factory.Object); Assert.Throws <ArgumentNullException>(() => strategy.GetBreweryRank(reviews.Object, nullOrEmpty)); }
public void ThrowArgumentNullException_WhenBeerRanksArgumentIsNull() { var factory = new Mock <IModelFactory>(); var name = this.Fixture.Create <string>(); var strategy = new DoubleOverallScoreStrategy(factory.Object); Assert.Throws <ArgumentNullException>(() => strategy.GetBreweryRank(null, name)); }
public void ThrowArgumentNullException_WhenBeerArgumentIsNull() { var factory = new Mock <IModelFactory>(); var reviews = new Mock <IEnumerable <IBeerReview> >(); var strategy = new DoubleOverallScoreStrategy(factory.Object); Assert.Throws <ArgumentNullException>(() => strategy.GetBeerRank(reviews.Object, null)); }
public void CallFactoryCreateBeerRankMethod_WithCorrectParamsOnce() { // Arrange var overallScore = this.Fixture.Create <int>(); var tasteScore = this.Fixture.Create <int>(); var smellScore = this.Fixture.Create <int>(); var looksScore = this.Fixture.Create <int>(); var factory = new Mock <IModelFactory>(); var mockedReview = new Mock <IBeerReview>(); mockedReview.Setup(r => r.Overall).Returns(overallScore); mockedReview.Setup(r => r.Taste).Returns(tasteScore); mockedReview.Setup(r => r.Smell).Returns(smellScore); mockedReview.Setup(r => r.Look).Returns(looksScore); var mockedReview2 = new Mock <IBeerReview>(); mockedReview.Setup(r => r.Overall).Returns(overallScore + this.Fixture.Create <int>()); mockedReview.Setup(r => r.Taste).Returns(tasteScore + this.Fixture.Create <int>()); mockedReview.Setup(r => r.Smell).Returns(smellScore + this.Fixture.Create <int>()); mockedReview.Setup(r => r.Look).Returns(looksScore + this.Fixture.Create <int>()); var beer = new Mock <IBeer>(); var reviews = new List <IBeerReview>() { mockedReview.Object, mockedReview2.Object }; var expectedAggregateScore = reviews.Sum(beerReview => (decimal)(2 * beerReview.Overall + beerReview.Look + beerReview.Smell + beerReview.Taste) / 5) / reviews.Count; var expectedOverall = (decimal)reviews.Sum(r => r.Overall) / reviews.Count; var expectedTaste = (decimal)reviews.Sum(r => r.Taste) / reviews.Count; var expectedSmell = (decimal)reviews.Sum(r => r.Smell) / reviews.Count; var expectedLook = (decimal)reviews.Sum(r => r.Look) / reviews.Count; var strategy = new DoubleOverallScoreStrategy(factory.Object); // Act var result = strategy.GetBeerRank(reviews, beer.Object); // Assert factory.Verify( f => f.CreateBeerRank(expectedOverall, expectedTaste, expectedLook, expectedSmell, beer.Object, expectedAggregateScore, reviews.Count), Times.Once); }
public void ThrowArgumentException_WhenReviewsAreEmpty() { var factory = new Mock <IModelFactory>(); var beer = new Mock <IBeer>(); var reviews = new List <IBeerReview>(); var strategy = new DoubleOverallScoreStrategy(factory.Object); Assert.Throws <ArgumentException>(() => strategy.GetBeerRank(reviews, beer.Object)); }
public void ReturnResultFromFactory() { // Arrange var expectedRank = new Mock <IBeerRank>(); var overallScore = this.Fixture.Create <int>(); var tasteScore = this.Fixture.Create <int>(); var smellScore = this.Fixture.Create <int>(); var looksScore = this.Fixture.Create <int>(); var expectedAggregateScore = (decimal)((overallScore * 2) + tasteScore + smellScore + looksScore) / 5; var mockedReview = new Mock <IBeerReview>(); mockedReview.Setup(r => r.Overall).Returns(overallScore); mockedReview.Setup(r => r.Taste).Returns(tasteScore); mockedReview.Setup(r => r.Smell).Returns(smellScore); mockedReview.Setup(r => r.Look).Returns(looksScore); var beer = new Mock <IBeer>(); var reviews = new List <IBeerReview>() { mockedReview.Object }; var factory = new Mock <IModelFactory>(); factory.Setup( f => f.CreateBeerRank(overallScore, tasteScore, looksScore, smellScore, beer.Object, expectedAggregateScore, 1)) .Returns(expectedRank.Object); var strategy = new DoubleOverallScoreStrategy(factory.Object); // Act var result = strategy.GetBeerRank(reviews, beer.Object); // Assert Assert.IsNotNull(result); Assert.AreSame(expectedRank.Object, result); }