public ReviewOrderViewModelBuilder(CheckoutDetailsModel checkoutDetailsModel, IShoppingCart shoppingCart, CartItemViewModelBuilder cartItemViewModelBuilder , IMappingEngine mapper)
 {
     this.checkoutDetailsModel = checkoutDetailsModel;
     this.shoppingCart = shoppingCart;
     this.cartItemViewModelBuilder = cartItemViewModelBuilder;
     this.mapper = mapper;
 }
 public OrderConfirmationEmailTemplateViewModelBuilder(string orderNumber, CheckoutDetailsModel model, IShoppingCart shoppingCart, CartItemViewModelBuilder cartItemBuilder)
 {
     this.orderNumber = orderNumber;
     this.model = model;
     this.shoppingCart = shoppingCart;
     this.cartItemBuilder = cartItemBuilder;
 }
        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();
        }
Exemple #4
0
 public ReviewOrderViewModelBuilder(CheckoutDetailsModel checkoutDetailsModel, IShoppingCart shoppingCart, CartItemViewModelBuilder cartItemViewModelBuilder, IMappingEngine mapper)
 {
     this.checkoutDetailsModel     = checkoutDetailsModel;
     this.shoppingCart             = shoppingCart;
     this.cartItemViewModelBuilder = cartItemViewModelBuilder;
     this.mapper = mapper;
 }
 public ShoppingCartViewModelBuilder(IShoppingCart shoppingCart, IJewelRepository jewelRepository, CartItemViewModelBuilder cartItemViewModelBuilder, IAuthentication authentication, IMappingEngine mapper)
 {
     this.shoppingCart = shoppingCart;
     this.jewelRepository = jewelRepository;
     this.cartItemViewModelBuilder = cartItemViewModelBuilder;
     this.authentication = authentication;
     this.mapper = mapper;
 }
Exemple #6
0
 public ShoppingCartViewModelBuilder(IShoppingCart shoppingCart, IJewelRepository jewelRepository, CartItemViewModelBuilder cartItemViewModelBuilder, IAuthentication authentication, IMappingEngine mapper)
 {
     this.shoppingCart             = shoppingCart;
     this.jewelRepository          = jewelRepository;
     this.cartItemViewModelBuilder = cartItemViewModelBuilder;
     this.authentication           = authentication;
     this.mapper = mapper;
 }
        private CartItemViewModelBuilder CartItemViewModelBuilderWithJewelCartItem()
        {
            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 jewelRepostory = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);

            var builder = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, mapper);
            return builder;
        }
        private CartItemViewModelBuilder CartItemViewModelBuilderWithDiamondCartItem()
        {
            var jewelRepostory = new FakeJewelRepository(new FakeSettingManager());
            var diamondRepository = new FakeDiamondRepository(mapper);

            var builder = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, 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;
        }
        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;
        }
        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);
        }
        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);
        }
        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 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;
        }
        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;
        }