public void ApplyWillApplyDefaultProductDiscountForPreferredCustomer()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            fixture.Register(() =>
                {
                    var customerStub = new Mock<IPrincipal>();
                    customerStub.Setup(p => p.IsInRole("PreferredCustomer")).Returns(true);
                    return customerStub.Object;
                });

            var basket = fixture.CreateAnonymous<Basket>();
            fixture.AddManyTo(basket.Contents);

            var expectedExtents = (from e in basket.Contents
                                   let ep = new DefaultCustomerDiscountPolicy().Apply(e.Product, basket.Owner)
                                   select new Likeness<Extent, Extent>(e)
                                        .With(d => d.Product).EqualsWhen((s, d) => new Likeness<Product, Product>(ep)
                                            .Equals(d.Product))
                                        .Without(d => d.Total)
                                        .Without(d => d.Updated))
                                    .ToList();

            var sut = fixture.CreateAnonymous<DefaultProductDiscountPolicy>();
            // Exercise system
            var result = sut.Apply(basket);
            // Verify outcome
            Assert.True(expectedExtents.Cast<object>().SequenceEqual(result.Contents.Cast<object>()));
            // Teardown
        }
Exemplo n.º 2
0
        public void GetBasketWhenRepositoryHasBasketWillReturnBasketWithCorrectContents()
        {
            // Fixture setup
            var fixture  = new RepositoryFixture();
            var products = fixture.CreateMany <Extent>().ToList();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <BasketRepository>();
                repositoryStub.Setup(r => r.GetBasketFor(It.IsAny <IPrincipal>())).Returns(products);
                return(repositoryStub.Object);
            });
            var expectedItems = (from e in products
                                 select new Likeness <Extent, Extent>(e)
                                 .With(d => d.Product).EqualsWhen((s, d) => new Likeness <Product, Product>(s.Product).Equals(d.Product))
                                 .Without(d => d.Total)
                                 .Without(d => d.Updated))
                                .ToList();
            var sut = fixture.CreateAnonymous <BasketService>();
            // Exercise system
            var result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));

            // Verify outcome
            Assert.True(expectedItems.Cast <object>().SequenceEqual(result.Contents.Cast <object>()));
            // Teardown
        }
        public void GetFeaturedProductsWillReturnCorrectProductsForPreferredCustomer()
        {
            // Fixture setup
            var fixture          = new RepositoryFixture();
            var featuredProducts = fixture.CreateMany <Product>().ToList();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <ProductRepository>();
                repositoryStub.Setup(r => r.GetFeaturedProducts()).Returns(featuredProducts);
                return(repositoryStub.Object);
            });

            var expectedProducts = (from p in featuredProducts
                                    select new Likeness <Product, Product>(p)
                                    .With(d => d.UnitPrice).EqualsWhen((s, d) => s.UnitPrice.Multiply(.95m).Equals(d.UnitPrice)))
                                   .ToList();

            var sut = fixture.CreateAnonymous <ProductService>();

            var preferredCustomerStub = new Mock <IPrincipal>();

            preferredCustomerStub.Setup(u => u.IsInRole("PreferredCustomer")).Returns(true);
            // Exercise system
            var result = sut.GetFeaturedProducts(preferredCustomerStub.Object);

            // Verify outcome
            Assert.True(expectedProducts.Cast <object>().SequenceEqual(result.Cast <object>()));
            // Teardown
        }
Exemplo n.º 4
0
        public void GetBasketWillApplyDiscountPolicyOnBasket()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var discountPolicyMock = new Mock <BasketDiscountPolicy>();

            discountPolicyMock.Setup(p => p.Apply(It.IsAny <Basket>())).Returns((Basket b) => b);
            fixture.Register(() => discountPolicyMock.Object);

            fixture.Register(() =>
            {
                var basketRepositoryStub = new Mock <BasketRepository>();
                basketRepositoryStub.Setup(r => r.GetBasketFor(It.IsAny <IPrincipal>())).Returns(fixture.CreateMany <Extent>());
                return(basketRepositoryStub.Object);
            });

            var sut = fixture.CreateAnonymous <BasketService>();
            // Exercise system
            var basket = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));

            // Verify outcome
            discountPolicyMock.Verify(p => p.Apply(basket), "Discount policy not correctly invoked");
            // Teardown
        }
        public void ApplyWillNotApplyDiscountsIfNoneInBasketArePresentInRepository()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <DiscountRepository>();
                repositoryStub.Setup(r => r.GetDiscountedProducts()).Returns(fixture.CreateMany <Product>());
                return(repositoryStub.Object);
            });

            var basket = fixture.CreateAnonymous <Basket>();

            fixture.AddManyTo(basket.Contents);

            var expectedContents = (from e in basket.Contents
                                    select new Likeness <Extent, Extent>(e)
                                    .With(d => d.Product).EqualsWhen((s, d) => new Likeness <Product, Product>(s.Product).Equals(d.Product)))
                                   .ToList();

            var sut = fixture.CreateAnonymous <RepositoryBasketDiscountPolicy>();
            // Exercise system
            var result = sut.Apply(basket);

            // Verify outcome
            Assert.True(expectedContents.Cast <object>().SequenceEqual(result.Contents.Cast <object>()));
            // Teardown
        }
        public void GetFeaturedProductsWillReturnCorrectProductsForPreferredCustomer()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var featuredProducts = fixture.CreateMany<Product>().ToList();
            fixture.Register(() =>
                {
                    var repositoryStub = new Mock<ProductRepository>();
                    repositoryStub.Setup(r => r.GetFeaturedProducts()).Returns(featuredProducts);
                    return repositoryStub.Object;
                });

            var expectedProducts = (from p in featuredProducts
                                    select new Likeness<Product, Product>(p)
                                        .With(d => d.UnitPrice).EqualsWhen((s, d) => s.UnitPrice.Multiply(.95m).Equals(d.UnitPrice)))
                                    .ToList();

            var sut = fixture.CreateAnonymous<ProductService>();

            var preferredCustomerStub = new Mock<IPrincipal>();
            preferredCustomerStub.Setup(u => u.IsInRole("PreferredCustomer")).Returns(true);
            // Exercise system
            var result = sut.GetFeaturedProducts(preferredCustomerStub.Object);
            // Verify outcome
            Assert.True(expectedProducts.Cast<object>().SequenceEqual(result.Cast<object>()));
            // Teardown
        }
        public void ApplyWillApplyDefaultProductDiscountForPreferredCustomer()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            fixture.Register(() =>
            {
                var customerStub = new Mock <IPrincipal>();
                customerStub.Setup(p => p.IsInRole("PreferredCustomer")).Returns(true);
                return(customerStub.Object);
            });

            var basket = fixture.CreateAnonymous <Basket>();

            fixture.AddManyTo(basket.Contents);

            var expectedExtents = (from e in basket.Contents
                                   let ep = new DefaultCustomerDiscountPolicy().Apply(e.Product, basket.Owner)
                                            select new Likeness <Extent, Extent>(e)
                                            .With(d => d.Product).EqualsWhen((s, d) => new Likeness <Product, Product>(ep)
                                                                             .Equals(d.Product))
                                            .Without(d => d.Total)
                                            .Without(d => d.Updated))
                                  .ToList();

            var sut = fixture.CreateAnonymous <DefaultProductDiscountPolicy>();
            // Exercise system
            var result = sut.Apply(basket);

            // Verify outcome
            Assert.True(expectedExtents.Cast <object>().SequenceEqual(result.Contents.Cast <object>()));
            // Teardown
        }
 public void SutImplementsIBasketService()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     // Exercise system
     var sut = fixture.CreateAnonymous<BasketService>();
     // Verify outcome
     Assert.IsAssignableFrom<IBasketService>(sut);
     // Teardown
 }
 public void SutIsBasketDiscountPolicy()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     // Exercise system
     var sut = fixture.CreateAnonymous<DefaultProductDiscountPolicy>();
     // Verify outcome
     Assert.IsAssignableFrom<BasketDiscountPolicy>(sut);
     // Teardown
 }
Exemplo n.º 10
0
        public void SutImplementsIBasketService()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            // Exercise system
            var sut = fixture.CreateAnonymous <BasketService>();

            // Verify outcome
            Assert.IsAssignableFrom <IBasketService>(sut);
            // Teardown
        }
Exemplo n.º 11
0
 public void ContentsIsNotNull()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     var sut = fixture.CreateAnonymous<Basket>();
     // Exercise system
     IList<Extent> result = sut.Contents;
     // Verify outcome
     Assert.NotNull(result);
     // Teardown
 }
Exemplo n.º 12
0
 public void GetFeaturedProductsWillReturnInstance()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     var sut = fixture.CreateAnonymous<ProductService>();
     // Exercise system
     IEnumerable<Product> result = fixture.Get((IPrincipal user) => sut.GetFeaturedProducts(user));
     // Verify outcome
     Assert.NotNull(result);
     // Teardown
 }
Exemplo n.º 13
0
 public void GetBasketForWithNullUserWillThrow()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     var sut = fixture.CreateAnonymous<BasketService>();
     IPrincipal nullUser = null;
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         sut.GetBasketFor(nullUser));
     // Teardown
 }
        public void SutIsBasketDiscountPolicy()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            // Exercise system
            var sut = fixture.CreateAnonymous <DefaultProductDiscountPolicy>();

            // Verify outcome
            Assert.IsAssignableFrom <BasketDiscountPolicy>(sut);
            // Teardown
        }
Exemplo n.º 15
0
        public void ContentsIsNotNull()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var sut     = fixture.CreateAnonymous <Basket>();
            // Exercise system
            IList <Extent> result = sut.Contents;

            // Verify outcome
            Assert.NotNull(result);
            // Teardown
        }
Exemplo n.º 16
0
 public void CreateWithNullRepositoryWillThrow()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     ProductRepository nullRepository = null;
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         fixture.Build<ProductService>()
             .FromFactory(() => new ProductService(nullRepository))
             .CreateAnonymous());
     // Teardown
 }
        public void GetFeaturedProductsWithNullPrincipalWillThrow()
        {
            // Fixture setup
            var        fixture       = new RepositoryFixture();
            var        sut           = fixture.CreateAnonymous <ProductService>();
            IPrincipal nullPrincipal = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.GetFeaturedProducts(nullPrincipal));
            // Teardown
        }
        public void SutIsBasketDiscountPolicy()
        {
            // Fixture setup
            var  fixture      = new RepositoryFixture();
            Type expectedBase = typeof(BasketDiscountPolicy);
            // Exercise system
            var sut = fixture.CreateAnonymous <RepositoryBasketDiscountPolicy>();

            // Verify outcome
            Assert.IsAssignableFrom <BasketDiscountPolicy>(sut);
            // Teardown
        }
        public void GetFeaturedProductsWillReturnInstance()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var sut     = fixture.CreateAnonymous <ProductService>();
            // Exercise system
            IEnumerable <Product> result = fixture.Get((IPrincipal user) => sut.GetFeaturedProducts(user));

            // Verify outcome
            Assert.NotNull(result);
            // Teardown
        }
Exemplo n.º 20
0
 public void CreateWithNullBasketDiscountPolicyWillThrow()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     BasketDiscountPolicy nullDiscountPolicy = null;
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         fixture.Build<BasketService>()
             .FromFactory((BasketRepository r) => new BasketService(r, nullDiscountPolicy))
             .CreateAnonymous());
     // Teardown
 }
Exemplo n.º 21
0
 public void CreateWithNullOwnerWillThrow()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     IPrincipal nullOwner = null;
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() =>
         fixture.Build<Basket>()
             .FromFactory(() => new Basket(nullOwner))
             .OmitAutoProperties()
             .CreateAnonymous());
     // Teardown
 }
Exemplo n.º 22
0
        public void CreateWithNullBasketDiscountPolicyWillThrow()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            BasketDiscountPolicy nullDiscountPolicy = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  fixture.Build <BasketService>()
                                                  .FromFactory((BasketRepository r) => new BasketService(r, nullDiscountPolicy))
                                                  .CreateAnonymous());
            // Teardown
        }
        public void CreateWithNullRepositoryWillThrow()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            ProductRepository nullRepository = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  fixture.Build <ProductService>()
                                                  .FromFactory(() => new ProductService(nullRepository))
                                                  .CreateAnonymous());
            // Teardown
        }
        public void CreateWithNullRepositoryWillThrow()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            DiscountRepository nullRepository = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  fixture.Build <RepositoryBasketDiscountPolicy>()
                                                  .FromFactory(() => new RepositoryBasketDiscountPolicy(nullRepository))
                                                  .OmitAutoProperties()
                                                  .CreateAnonymous());
            // Teardown
        }
Exemplo n.º 25
0
        public void CreateWithNullOwnerWillThrow()
        {
            // Fixture setup
            var        fixture   = new RepositoryFixture();
            IPrincipal nullOwner = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  fixture.Build <Basket>()
                                                  .FromFactory(() => new Basket(nullOwner))
                                                  .OmitAutoProperties()
                                                  .CreateAnonymous());
            // Teardown
        }
Exemplo n.º 26
0
 public void OwnerWillMatchConstructorArgument()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     var expectedOwner = fixture.CreateAnonymous<IPrincipal>();
     var sut = fixture.Build<Basket>()
         .FromFactory(() => new Basket(expectedOwner))
         .OmitAutoProperties()
         .CreateAnonymous();
     // Exercise system
     IPrincipal result = sut.Owner;
     // Verify outcome
     Assert.Equal<IPrincipal>(expectedOwner, result);
     // Teardown
 }
Exemplo n.º 27
0
        public void OwnerWillMatchConstructorArgument()
        {
            // Fixture setup
            var fixture       = new RepositoryFixture();
            var expectedOwner = fixture.CreateAnonymous <IPrincipal>();
            var sut           = fixture.Build <Basket>()
                                .FromFactory(() => new Basket(expectedOwner))
                                .OmitAutoProperties()
                                .CreateAnonymous();
            // Exercise system
            IPrincipal result = sut.Owner;

            // Verify outcome
            Assert.Equal <IPrincipal>(expectedOwner, result);
            // Teardown
        }
Exemplo n.º 28
0
 public void GetBasketWhenRepositoryHasNoBasketWillReturnEmptyBasket()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     fixture.Register(() =>
         {
             var repositoryStub = new Mock<BasketRepository>();
             repositoryStub.Setup(r => r.GetBasketFor(It.IsAny<IPrincipal>())).Returns(Enumerable.Empty<Extent>());
             return repositoryStub.Object;
         });
     var sut = fixture.CreateAnonymous<BasketService>();
     // Exercise system
     Basket result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));
     // Verify outcome
     Assert.False(result.Contents.Any(), "GetBasketFor");
     // Teardown
 }
Exemplo n.º 29
0
        public void EmptyWillUseRepositoryCorrectly()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var user    = fixture.CreateAnonymous <IPrincipal>();

            var repositoryMock = new Mock <BasketRepository>();

            repositoryMock.Setup(r => r.Empty(user)).Verifiable();
            fixture.Register(() => repositoryMock.Object);

            var sut = fixture.CreateAnonymous <BasketService>();

            // Exercise system
            sut.Empty(user);
            // Verify outcome
            repositoryMock.Verify();
            // Teardown
        }
Exemplo n.º 30
0
        public void GetBasketWhenRepositoryHasNoBasketWillReturnEmptyBasket()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <BasketRepository>();
                repositoryStub.Setup(r => r.GetBasketFor(It.IsAny <IPrincipal>())).Returns(Enumerable.Empty <Extent>());
                return(repositoryStub.Object);
            });
            var sut = fixture.CreateAnonymous <BasketService>();
            // Exercise system
            Basket result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));

            // Verify outcome
            Assert.False(result.Contents.Any(), "GetBasketFor");
            // Teardown
        }
Exemplo n.º 31
0
        public void GetBasketWillReturnBasketWithAppliedDiscountPolicy()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var expectedBasket = fixture.CreateAnonymous <Basket>();

            var discountPolicyMock = new Mock <BasketDiscountPolicy>();

            discountPolicyMock.Setup(dp => dp.Apply(It.IsAny <Basket>())).Returns(expectedBasket);
            fixture.Register(() => discountPolicyMock.Object);

            var sut = fixture.CreateAnonymous <BasketService>();
            // Exercise system
            var result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));

            // Verify outcome
            Assert.Equal <Basket>(expectedBasket, result);
            // Teardown
        }
Exemplo n.º 32
0
        public void AddToBasketWillUseRepositoryCorrectly()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var productId = fixture.CreateAnonymous <int>();
            var quantity  = fixture.CreateAnonymous <int>();
            var user      = fixture.CreateAnonymous <IPrincipal>();

            var repositoryMock = new Mock <BasketRepository>();

            repositoryMock.Setup(r => r.AddToBasket(productId, quantity, user)).Verifiable();
            fixture.Register(() => repositoryMock.Object);

            var sut = fixture.CreateAnonymous <BasketService>();

            // Exercise system
            sut.AddToBasket(productId, quantity, user);
            // Verify outcome
            repositoryMock.Verify();
            // Teardown
        }
Exemplo n.º 33
0
        public void GetFeaturedProductsWillReturnCorrectProductsForNonPreferredUser()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var featuredProducts = fixture.CreateMany<Product>().ToList();
            fixture.Register(() =>
                {
                    var repositoryStub = new Mock<ProductRepository>();
                    repositoryStub.Setup(r => r.GetFeaturedProducts()).Returns(featuredProducts);
                    return repositoryStub.Object;
                });

            var expectedProducts = (from p in featuredProducts
                                    select new Likeness<Product, Product>(p)).ToList();

            var sut = fixture.CreateAnonymous<ProductService>();
            // Exercise system
            var result = fixture.Get((IPrincipal user) => sut.GetFeaturedProducts(user));
            // Verify outcome
            Assert.True(expectedProducts.Cast<object>().SequenceEqual(result.Cast<object>()));
            // Teardown
        }
        public void ApplyWillApplyDiscountFromRepository()
        {
            // Fixture setup
            var fixture            = new RepositoryFixture();
            var discountedProducts = fixture.CreateMany <Product>().ToList();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <DiscountRepository>();
                repositoryStub.Setup(r => r.GetDiscountedProducts()).Returns(discountedProducts);
                return(repositoryStub.Object);
            });

            var basket = fixture.CreateAnonymous <Basket>();

            basket.Contents.Add(new Extent(discountedProducts.First().WithUnitPrice(discountedProducts.First().UnitPrice.Add(fixture.CreateAnonymous <decimal>())))
            {
                Quantity = fixture.CreateAnonymous <int>()
            });

            var expectedExtent = new
            {
                Product = new Likeness <Product, Product>(discountedProducts.First()).Without(d => d.Id),
                basket.Contents.First().Quantity
            }.AsSource().OfLikeness <Extent>()
            .Without(d => d.Total)
            .Without(d => d.Updated);


            var sut = fixture.CreateAnonymous <RepositoryBasketDiscountPolicy>();
            // Exercise system
            var result = sut.Apply(basket);

            // Verify outcome
            Assert.True(expectedExtent.Equals(result.Contents.First()));
            // Teardown
        }
        public void GetFeaturedProductsWillReturnCorrectProductsForNonPreferredUser()
        {
            // Fixture setup
            var fixture          = new RepositoryFixture();
            var featuredProducts = fixture.CreateMany <Product>().ToList();

            fixture.Register(() =>
            {
                var repositoryStub = new Mock <ProductRepository>();
                repositoryStub.Setup(r => r.GetFeaturedProducts()).Returns(featuredProducts);
                return(repositoryStub.Object);
            });

            var expectedProducts = (from p in featuredProducts
                                    select new Likeness <Product, Product>(p)).ToList();

            var sut = fixture.CreateAnonymous <ProductService>();
            // Exercise system
            var result = fixture.Get((IPrincipal user) => sut.GetFeaturedProducts(user));

            // Verify outcome
            Assert.True(expectedProducts.Cast <object>().SequenceEqual(result.Cast <object>()));
            // Teardown
        }
Exemplo n.º 36
0
 public void GetBasketWhenRepositoryHasBasketWillReturnBasketWithCorrectContents()
 {
     // Fixture setup
     var fixture = new RepositoryFixture();
     var products = fixture.CreateMany<Extent>().ToList();
     fixture.Register(() =>
         {
             var repositoryStub = new Mock<BasketRepository>();
             repositoryStub.Setup(r => r.GetBasketFor(It.IsAny<IPrincipal>())).Returns(products);
             return repositoryStub.Object;
         });
     var expectedItems = (from e in products
                          select new Likeness<Extent, Extent>(e)
                             .With(d => d.Product).EqualsWhen((s, d) => new Likeness<Product, Product>(s.Product).Equals(d.Product))
                             .Without(d => d.Total)
                             .Without(d => d.Updated))
                         .ToList();
     var sut = fixture.CreateAnonymous<BasketService>();
     // Exercise system
     var result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));
     // Verify outcome
     Assert.True(expectedItems.Cast<object>().SequenceEqual(result.Contents.Cast<object>()));
     // Teardown
 }
Exemplo n.º 37
0
        public void GetBasketWillApplyDiscountPolicyOnBasket()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var discountPolicyMock = new Mock<BasketDiscountPolicy>();
            discountPolicyMock.Setup(p => p.Apply(It.IsAny<Basket>())).Returns((Basket b) => b);
            fixture.Register(() => discountPolicyMock.Object);

            fixture.Register(() =>
                {
                    var basketRepositoryStub = new Mock<BasketRepository>();
                    basketRepositoryStub.Setup(r => r.GetBasketFor(It.IsAny<IPrincipal>())).Returns(fixture.CreateMany<Extent>());
                    return basketRepositoryStub.Object;
                });

            var sut = fixture.CreateAnonymous<BasketService>();
            // Exercise system
            var basket = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));
            // Verify outcome
            discountPolicyMock.Verify(p => p.Apply(basket), "Discount policy not correctly invoked");
            // Teardown
        }
Exemplo n.º 38
0
        public void EmptyWillUseRepositoryCorrectly()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            var user = fixture.CreateAnonymous<IPrincipal>();

            var repositoryMock = new Mock<BasketRepository>();
            repositoryMock.Setup(r => r.Empty(user)).Verifiable();
            fixture.Register(() => repositoryMock.Object);

            var sut = fixture.CreateAnonymous<BasketService>();
            // Exercise system
            sut.Empty(user);
            // Verify outcome
            repositoryMock.Verify();
            // Teardown
        }
Exemplo n.º 39
0
        public void AddToBasketWillUseRepositoryCorrectly()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var productId = fixture.CreateAnonymous<int>();
            var quantity = fixture.CreateAnonymous<int>();
            var user = fixture.CreateAnonymous<IPrincipal>();

            var repositoryMock = new Mock<BasketRepository>();
            repositoryMock.Setup(r => r.AddToBasket(productId, quantity, user)).Verifiable();
            fixture.Register(() => repositoryMock.Object);

            var sut = fixture.CreateAnonymous<BasketService>();
            // Exercise system
            sut.AddToBasket(productId, quantity, user);
            // Verify outcome
            repositoryMock.Verify();
            // Teardown
        }
Exemplo n.º 40
0
        public void GetBasketWillReturnBasketWithAppliedDiscountPolicy()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();

            var expectedBasket = fixture.CreateAnonymous<Basket>();

            var discountPolicyMock = new Mock<BasketDiscountPolicy>();
            discountPolicyMock.Setup(dp => dp.Apply(It.IsAny<Basket>())).Returns(expectedBasket);
            fixture.Register(() => discountPolicyMock.Object);

            var sut = fixture.CreateAnonymous<BasketService>();
            // Exercise system
            var result = fixture.Get((IPrincipal user) => sut.GetBasketFor(user));
            // Verify outcome
            Assert.Equal<Basket>(expectedBasket, result);
            // Teardown
        }