Ejemplo n.º 1
0
        public void Build_ShouldCallTheFilterMetalOnTheRepositoryWithTheCorrectMediaType()
        {
            //Arrange
            var shoppingCart = MockRepository.GenerateStub <IShoppingCart>();

            shoppingCart.Stub(x => x.Items).Return(new List <ICartItem>()
            {
                FakeJewelCartItem(Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725, JewelMediaType.YellowGold, Tests.NUMBER_HAS_NO_MEANING_IN_THIS_CONTEXT)
            });
            shoppingCart.Stub(x => x.TotalPrice).Return(10000);

            var fakeJewel = new FakeJewelRepository(new FakeSettingManager()).GetJewelByID(Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID);

            var jewelryRepository = MockRepository.GenerateMock <IJewelRepository>();

            jewelryRepository.Stub(x => x.GetJewelByID(Arg <int> .Is.Anything)).Return(fakeJewel);
            jewelryRepository.Expect(x => x.FilterMediaByMetal(Arg <JewelMediaType> .Is.Equal(JewelMediaType.YellowGold)))
            .Repeat.Once();

            var diamondRepository = new FakeDiamondRepository(mapper);

            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelryRepository, diamondRepository, mapper);

            var authentication = MockRepository.GenerateStub <IAuthentication>();
            var builder        = new ShoppingCartViewModelBuilder(shoppingCart, jewelryRepository, cartItemViewModelBuilder, authentication, mapper);
            //Act
            var viewModel = builder.Build();

            //Assert
            jewelryRepository.VerifyAllExpectations();
        }
 public OrderConfirmationEmailTemplateViewModelBuilder(string orderNumber, CheckoutDetailsModel model, IShoppingCart shoppingCart, CartItemViewModelBuilder cartItemBuilder)
 {
     this.orderNumber     = orderNumber;
     this.model           = model;
     this.shoppingCart    = shoppingCart;
     this.cartItemBuilder = cartItemBuilder;
 }
Ejemplo n.º 3
0
        private CartItemViewModelBuilder CartItemViewModelBuilderWithDiamondCartItem()
        {
            var jewelRepostory    = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);


            var builder = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, mapper);

            return(builder);
        }
Ejemplo n.º 4
0
        public ActionResult ShoppingCart()
        {
            var shoppingCart             = shoppingCartWrapper.Get();
            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelRepository, diamondRepository, mapper);


            var builder   = new ShoppingCartViewModelBuilder(shoppingCart, jewelRepository, cartItemViewModelBuilder, authentication, mapper);
            var viewModel = builder.Build();

            return(View(viewModel));
        }
Ejemplo n.º 5
0
        private ShoppingCartViewModelBuilder CreateDefaultShoppingCartViewModelBuilderWithShoppingCartAsParameter(IShoppingCart shoppingCart)
        {
            var jewelryRepository = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);

            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelryRepository, diamondRepository,
                                                                        mapper);

            var authentication = MockRepository.GenerateStub <IAuthentication>();

            var builder = new ShoppingCartViewModelBuilder(shoppingCart, jewelryRepository, cartItemViewModelBuilder, authentication, mapper);

            return(builder);
        }
        private OrderConfirmationEmailTemplateViewModelBuilder CreateDefaultOrderConfirmationEmailTemplateViewModelBuilder(
            string orderNumber, CheckoutDetailsModel model)
        {
            var shoppingCart = FakeFactory.ShoppingCartWith3Items();


            var jewelRepostory    = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);
            var cartItemBuilder   = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, mapper);


            var builder = new OrderConfirmationEmailTemplateViewModelBuilder(orderNumber, model, shoppingCart, cartItemBuilder);

            return(builder);
        }
Ejemplo n.º 7
0
        private ShoppingCartViewModelBuilder CreateDefaultShoppingCartViewModelBuilderWithCustomAuthentication(IAuthentication authentication)
        {
            var jewelryRepository = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);
            var shoppingCart      = FakeFactory.ShoppingCartWith3Items();


            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelryRepository, diamondRepository,
                                                                        mapper);



            var builder = new ShoppingCartViewModelBuilder(shoppingCart, jewelryRepository, cartItemViewModelBuilder, authentication, mapper);

            return(builder);
        }
Ejemplo n.º 8
0
        private CartItemViewModelBuilder CartItemViewModelBuilderWithCustomJewelItem()
        {
            var shoppingCart = MockRepository.GenerateStub <IShoppingCart>();

            shoppingCart.Stub(x => x.Items).Return(new List <ICartItem>()
            {
                FakeCustomJewelCartItem(
                    Tests.FAKE_DIAMOND_REPOSITORY_FIRST_ITEM_ID, Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725, JewelMediaType.WhiteGold,
                    Tests.NUMBER_HAS_NO_MEANING_IN_THIS_CONTEXT)
            });

            var jewelRepostory    = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);


            var builder = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, mapper);

            return(builder);
        }
Ejemplo n.º 9
0
        public ActionResult ReviewOrder(CheckoutDetailsModel checkoutDetailsModel)
        {
            if (CheckIfCartSessionTimedoutOrCartIsEmpty())
            {
                return(RedirectToAction("CheckoutSessionTimeout"));
            }
            var shoppingCart = shoppingCartWrapper.Get();

            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelRepository, diamondRepository, mapper);
            var builder   = new ReviewOrderViewModelBuilder(checkoutDetailsModel, shoppingCart, cartItemViewModelBuilder, mapper);
            var viewModel = builder.Build();

            if (checkoutDetailsModel.PaymentMethod == PaymentMethod.PayPal)
            {
                var orderNumber = SaveOrderAndEmail(checkoutDetailsModel, shoppingCart);
                viewModel.OrderNumber = orderNumber;
            }

            return(View(viewModel));
        }
Ejemplo n.º 10
0
        private int SaveOrderAndEmail(CheckoutDetailsModel checkoutDetailsModel, IShoppingCart shoppingCart)
        {
            var orderBuilder = new OrderBuilder(shoppingCart, authentication, mapper);
            var orderdto     = orderBuilder.Build(checkoutDetailsModel);

            var orderNumber = orderRepository.Save(orderdto);

            if (orderNumber > 0)
            {
                var cartItemBuilder      = new CartItemViewModelBuilder(jewelRepository, diamondRepository, mapper);
                var emailTemplateBuilder = new OrderConfirmationEmailTemplateViewModelBuilder(orderNumber.ToString(),
                                                                                              checkoutDetailsModel,
                                                                                              shoppingCart,
                                                                                              cartItemBuilder);

                var emailTemplateViewModel = emailTemplateBuilder.Build();
                mailer.OrderConfirmation(checkoutDetailsModel.Email, emailTemplateViewModel).Send();
            }

            return(orderNumber);
        }
Ejemplo n.º 11
0
        private ShoppingCartViewModelBuilder CreateDefaultShoppingCartViewModelBuilder()
        {
            var shoppingCart = MockRepository.GenerateStub <IShoppingCart>();

            shoppingCart.Stub(x => x.Items).Return(new List <ICartItem>()
            {
                FakeJewelCartItem(Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725, JewelMediaType.WhiteGold,
                                  Tests.NUMBER_HAS_NO_MEANING_IN_THIS_CONTEXT)
            });

            var jewelryRepository = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);

            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelryRepository, diamondRepository,
                                                                        mapper);

            var authentication = MockRepository.GenerateStub <IAuthentication>();

            var builder = new ShoppingCartViewModelBuilder(shoppingCart, jewelryRepository, cartItemViewModelBuilder, authentication, mapper);

            return(builder);
        }
        private ReviewOrderViewModelBuilder CreateDefaultReviewOrderViewModelBuilder()
        {
            var checkoutDetailsModel = DefaultCheckoutDetailsModel();


            var shoppingCart = MockRepository.GenerateStub <IShoppingCart>();

            shoppingCart.Stub(x => x.TotalPrice).Return(10000);
            shoppingCart.Stub(x => x.Items).Return(new List <ICartItem>()
            {
                FakeJewelCartItem(Tests.FAKE_JEWELRY_REPOSITORY_FIRST_ITEM_ID, Tests.SAMPLE_JEWEL_SIZE_725, JewelMediaType.WhiteGold,
                                  (decimal)9999.99)
            });

            var jewelryRepository        = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository        = new FakeDiamondRepository(mapper);
            var cartItemViewModelBuilder = new CartItemViewModelBuilder(jewelryRepository, diamondRepository,
                                                                        mapper);

            var builder = new ReviewOrderViewModelBuilder(checkoutDetailsModel, shoppingCart, cartItemViewModelBuilder, mapper);

            return(builder);
        }
Ejemplo n.º 13
0
 public CartItemsViewModelResolver(CartItemViewModelBuilder cartItemViewModelBuilder)
 {
     this.cartItemViewModelBuilder = cartItemViewModelBuilder;
 }