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());
        }