Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }