예제 #1
0
 //   private readonly ClothDbContext context;
 public UnitOfWork()
 {
     //context = new ClothDbContext();
     Clothes    = new MockClothRepository();    // new ClothRepository(context);
     Orders     = new MockOrderRepository();    //new OrderRepository(context);
     Categories = new MockCategoryRepository(); //new CategoryRepository(context);
 }
        public void NavigatingToWhenNoShippingMethodSelected_RecalculatesOrder()
        {
            var shippingMethods = new List <ShippingMethod> {
                new ShippingMethod {
                    Id = 1, Cost = 0
                }
            };
            var shoppingCartItems = new List <ShoppingCartItem> {
                new ShoppingCartItem {
                    Quantity = 1, Currency = "USD", Product = new Product()
                }
            };
            var order = new Order
            {
                ShoppingCart = new ShoppingCart(shoppingCartItems)
                {
                    Currency = "USD", TotalPrice = 100
                },
                ShippingAddress = new Address {
                    Id = "1"
                },
                BillingAddress = new Address {
                    Id = "1"
                },
                PaymentMethod = new PaymentMethod()
                {
                    CardNumber = "1234"
                },
                ShippingMethod = null
            };
            var shippingMethodService = new MockShippingMethodService
            {
                GetShippingMethodsAsyncDelegate = () => Task.FromResult <IEnumerable <ShippingMethod> >(shippingMethods)
            };
            var orderRepository = new MockOrderRepository {
                CurrentOrder = order
            };
            var shoppingCartRepository = new MockShoppingCartRepository
            {
                GetShoppingCartAsyncDelegate = () => Task.FromResult(order.ShoppingCart)
            };
            var checkoutDataRepository = new MockCheckoutDataRepository();

            checkoutDataRepository.GetShippingAddressAsyncDelegate = s => Task.FromResult(new Address());
            checkoutDataRepository.GetBillingAddressAsyncDelegate  = s => Task.FromResult(new Address());
            checkoutDataRepository.GetPaymentMethodDelegate        = s => Task.FromResult(new PaymentMethod {
                CardNumber = "1234"
            });
            var target = new CheckoutSummaryPageViewModel(new MockNavigationService(), new MockOrderService(), orderRepository, shippingMethodService,
                                                          checkoutDataRepository, shoppingCartRepository,
                                                          new MockAccountService(), new MockResourceLoader(), null, null);

            target.OnNavigatedTo(new NavigatedToEventArgs {
                Parameter = null, NavigationMode = NavigationMode.New
            }, null);

            Assert.AreEqual("$0.00", target.ShippingCost);
            Assert.AreEqual("$100.00", target.OrderSubtotal);
            Assert.AreEqual("$100.00", target.GrandTotal);
        }
        public void SelectCheckoutData_Opens_AppBar()
        {
            var shippingMethods = new List <ShippingMethod>()
            {
                new ShippingMethod()
                {
                    Id = 1, Cost = 0
                }
            };
            var shoppingCartItems = new List <ShoppingCartItem>()
            {
                new ShoppingCartItem()
                {
                    Quantity = 1, Currency = "USD", Product = new Product()
                }
            };
            var order = new Order()
            {
                ShoppingCart = new ShoppingCart(shoppingCartItems)
                {
                    Currency = "USD", FullPrice = 100
                },
                ShippingAddress = new Address(),
                BillingAddress  = new Address(),
                PaymentMethod   = new PaymentMethod()
                {
                    CardNumber = "1234"
                },
                ShippingMethod = shippingMethods.First()
            };
            var shippingMethodService = new MockShippingMethodService()
            {
                GetShippingMethodsAsyncDelegate = () => Task.FromResult <IEnumerable <ShippingMethod> >(shippingMethods)
            };
            var orderRepository = new MockOrderRepository()
            {
                CurrentOrder = order
            };
            var shoppingCartRepository = new MockShoppingCartRepository();

            shoppingCartRepository.GetShoppingCartAsyncDelegate = () => Task.FromResult(order.ShoppingCart);
            var checkoutDataRepository = new MockCheckoutDataRepository();

            checkoutDataRepository.GetShippingAddressAsyncDelegate = s => Task.FromResult(new Address());
            checkoutDataRepository.GetBillingAddressAsyncDelegate  = s => Task.FromResult(new Address());
            checkoutDataRepository.GetPaymentMethodDelegate        = s => Task.FromResult(new PaymentMethod {
                CardNumber = "1234"
            });
            var target = new CheckoutSummaryPageViewModel(new MockNavigationService(), new MockOrderService(), orderRepository, shippingMethodService,
                                                          checkoutDataRepository, shoppingCartRepository,
                                                          new MockAccountService(), new MockResourceLoader(), null, null);

            target.OnNavigatedTo(new NavigatedToEventArgs {
                Parameter = null, NavigationMode = NavigationMode.New
            }, null);
            Assert.IsFalse(target.IsBottomAppBarOpened);

            target.SelectedCheckoutData = target.CheckoutDataViewModels.First();
            Assert.IsTrue(target.IsBottomAppBarOpened);
        }
예제 #4
0
        public void ProcessFormAsync_WithServerValidationError_ShowsMessage()
        {
            var shippingAddressPageViewModel = new MockShippingAddressPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = () => Task.Delay(0),
                Address = new Address()
            };
            var billingAddressPageViewModel = new MockBillingAddressPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = () => Task.Delay(0),
                Address = new Address()
            };
            var paymentMethodPageViewModel = new MockPaymentMethodPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = async() => await Task.Delay(0),
                PaymentMethod            = new PaymentMethod()
            };
            var accountService = new MockAccountService()
            {
                VerifyUserAuthenticationAsyncDelegate = () => Task.FromResult(new UserInfo()),
                SignedInUser = new UserInfo()
            };
            var shoppingCartRepository = new MockShoppingCartRepository()
            {
                GetShoppingCartAsyncDelegate =
                    () => Task.FromResult(new ShoppingCart(null))
            };
            var orderRepository = new MockOrderRepository()
            {
                CreateBasicOrderAsyncDelegate = (s, cart, arg3, arg4, arg5) =>
                {
                    var result = new ModelValidationResult();
                    result.ModelState.Add("order.ShippingAddress.ZipCode", new List <string> {
                        "Validation Message"
                    });
                    throw new ModelValidationException(result);
                }
            };
            var target = new CheckoutHubPageViewModel(new MockNavigationService(), accountService, orderRepository, shoppingCartRepository, shippingAddressPageViewModel,
                                                      billingAddressPageViewModel, paymentMethodPageViewModel, null, null);

            target.GoNextCommand.Execute();

            Assert.IsTrue(target.IsShippingAddressInvalid);
        }
예제 #5
0
        public void AddOrdersFromFiles_MockUtilsClassAndMethods_ReturnAllOrdersInFiles()
        {
            var path        = "TestFiles\\";
            var utils       = new Utils();
            var mockedUtils = new Mock <CreateAddOrdersFromFilesMock>();

            mockedUtils.Setup(e => e.FileIsAlreadyRegistered(It.IsAny <string>())).Returns(false);
            mockedUtils.Setup(e => e.OrderIsAlreadyRegistered(It.IsAny <OrderRow>())).Returns(false);
            mockedUtils.Setup(e => e.AddedOrderSuccessfullyToDatabase(It.IsAny <OrderRow>())).Returns(true);

            MockOrderRepository or = new MockOrderRepository(mockedUtils.Object);
            var orders             = or.AddOrdersFromFiles(new List <OrderRow>(), path);

            mockedUtils.VerifyAll();
            Assert.AreEqual(orders.Count, 13);
            Assert.AreEqual(orders[5].OrderNumber, "17890");
            Assert.AreEqual(orders[8].Name, "Little Guys");
            Assert.AreEqual(orders[10].OrderLineNumber, "0003");
        }
        public void Checkout_WhenShoppingCartContainsItems_ReturnsARedirectToAction()
        {
            // Arrange
            AppDbContext context = MockAppDbContext.BuildContextInMemoryDb();

            BuildCartWithItems(context);

            Order order = new Order();
            var   mockOrderRepository = new MockOrderRepository()
                                        .CreateOrder(order);

            var sut = new OrderController(mockOrderRepository.Object,
                                          new ShoppingCart(context));

            // Act
            var result = sut.Checkout(order);

            // Assert
            Assert.IsAssignableFrom <RedirectToActionResult>(result);
            mockOrderRepository.Verify(x => x.CreateOrder(order), Times.Once());
        }
        public void Checkout_WhenShoppingCartIsEmpty_ReturnsAViewResult()
        {
            // Arrange
            AppDbContext context = MockAppDbContext.BuildContextInMemoryDb();

            BuildEmptyCart(context);

            Order order = new Order();
            var   mockOrderRepository = new MockOrderRepository()
                                        .CreateOrder(order);

            var sut = new OrderController(mockOrderRepository.Object,
                                          new ShoppingCart(context));

            // Act
            var result = sut.Checkout(order);

            // Assert
            Assert.IsAssignableFrom <ViewResult>(result);
            mockOrderRepository.Verify(x => x.CreateOrder(order), Times.Never());
        }
 public OrderServiceTests()
 {
     repository   = new MockOrderRepository();
     cart         = new Cart();
     orderService = new OrderService(repository, cart);
 }
예제 #9
0
        public async Task ExecuteGoNextCommand_ProcessesFormsAndNavigates_IfViewModelsAreValid()
        {
            bool shippingInfoProcessed        = false;
            bool billingInfoProcessed         = false;
            bool paymentInfoProcessed         = false;
            bool navigated                    = false;
            var  shippingAddressPageViewModel = new MockShippingAddressPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = () =>
                {
                    shippingInfoProcessed = true;
                    return(Task.Delay(0));
                }
            };
            var billingAddressPageViewModel = new MockBillingAddressPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = () =>
                {
                    billingInfoProcessed = true;
                    return(Task.Delay(0));
                }
            };
            var paymentMethodPageViewModel = new MockPaymentMethodPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = async() =>
                {
                    paymentInfoProcessed = true;
                    await Task.Delay(0);
                }
            };
            var accountService = new MockAccountService()
            {
                VerifyUserAuthenticationAsyncDelegate = () => Task.FromResult(new UserInfo()),
                SignedInUser = new UserInfo()
                {
                    UserName = "******"
                }
            };
            var orderRepository = new MockOrderRepository()
            {
                CreateBasicOrderAsyncDelegate = (a, b, c, d, e) => Task.FromResult(new Order()
                {
                    Id = 1
                })
            };
            var shoppingCartRepository = new MockShoppingCartRepository()
            {
                GetShoppingCartAsyncDelegate = () => Task.FromResult(new ShoppingCart(null))
            };
            var navigationService = new MockNavigationService()
            {
                NavigateDelegate = (a, b) => navigated = true
            };

            var target = new CheckoutHubPageViewModel(navigationService, accountService, orderRepository, shoppingCartRepository,
                                                      shippingAddressPageViewModel, billingAddressPageViewModel, paymentMethodPageViewModel, null, null);
            await target.GoNextCommand.Execute();

            Assert.IsTrue(shippingInfoProcessed);
            Assert.IsTrue(billingInfoProcessed);
            Assert.IsTrue(paymentInfoProcessed);
            Assert.IsTrue(navigated);
        }
예제 #10
0
        public async Task SettingUseShippingAddressToTrue_CopiesValuesFromShippingAddressToBilling()
        {
            var mockAddress = new Address()
            {
                FirstName       = "TestFirstName",
                MiddleInitial   = "TestMiddleInitial",
                LastName        = "TestLastName",
                StreetAddress   = "TestStreetAddress",
                OptionalAddress = "TestOptionalAddress",
                City            = "TestCity",
                State           = "TestState",
                ZipCode         = "123456",
                Phone           = "123456"
            };
            var compareAddressesFunc = new Func <Address, Address, bool>((Address a1, Address a2) =>
            {
                return(a1.FirstName == a2.FirstName && a1.MiddleInitial == a2.MiddleInitial && a1.LastName == a2.LastName &&
                       a1.StreetAddress == a2.StreetAddress && a1.OptionalAddress == a2.OptionalAddress && a1.City == a2.City &&
                       a1.State == a2.State && a1.ZipCode == a2.ZipCode && a1.Phone == a2.Phone);
            });

            var shippingAddressPageViewModel = new MockShippingAddressPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = () => Task.Delay(0),
                Address = mockAddress
            };
            var billingAddressPageViewModel = new MockBillingAddressPageViewModel()
            {
                ValidateFormDelegate = () => true
            };

            billingAddressPageViewModel.ProcessFormAsyncDelegate = () =>
            {
                // The Address have to be updated before the form is processed
                Assert.IsTrue(compareAddressesFunc(shippingAddressPageViewModel.Address, billingAddressPageViewModel.Address));
                return(Task.Delay(0));
            };
            var paymentMethodPageViewModel = new MockPaymentMethodPageViewModel()
            {
                ValidateFormDelegate     = () => true,
                ProcessFormAsyncDelegate = async() => await Task.Delay(0),
            };
            var accountService = new MockAccountService()
            {
                VerifyUserAuthenticationAsyncDelegate = () => Task.FromResult(new UserInfo()),
                SignedInUser = new UserInfo()
            };
            var orderRepository = new MockOrderRepository()
            {
                CreateBasicOrderAsyncDelegate = (userId, shoppingCart, shippingAddress, billingAddress, paymentMethod) =>
                {
                    // The Address information stored in the order must be the same
                    Assert.IsTrue(compareAddressesFunc(shippingAddress, billingAddress));
                    return(Task.FromResult <Order>(new Order()));
                }
            };
            var shoppingCartRepository = new MockShoppingCartRepository()
            {
                GetShoppingCartAsyncDelegate = () => Task.FromResult(new ShoppingCart(null))
            };
            var navigationService = new MockNavigationService()
            {
                NavigateDelegate = (a, b) => true
            };

            var target = new CheckoutHubPageViewModel(navigationService, accountService, orderRepository, shoppingCartRepository,
                                                      shippingAddressPageViewModel, billingAddressPageViewModel, paymentMethodPageViewModel, null, null);

            target.UseSameAddressAsShipping = true;

            await target.GoNextCommand.Execute();
        }
예제 #11
0
 public UnitTestsOrderAPI()
 {
     repos = new MockOrderRepository();
 }