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; }
private CartItemViewModelBuilder CartItemViewModelBuilderWithDiamondCartItem() { var jewelRepostory = new FakeJewelRepository(new FakeSettingManager()); var diamondRepository = new FakeDiamondRepository(mapper); var builder = new CartItemViewModelBuilder(jewelRepostory, diamondRepository, mapper); return(builder); }
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)); }
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); }
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 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); }
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 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); }
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); }
public CartItemsViewModelResolver(CartItemViewModelBuilder cartItemViewModelBuilder) { this.cartItemViewModelBuilder = cartItemViewModelBuilder; }