コード例 #1
0
        public void ShouldReturnCartItemsById()
        {
            // Arrange
            var shoppingCart = new ShoppingCart("1");

            shoppingCart.AddItem(new ShoppingCartItem()
            {
                ProductId    = 1,
                ProductName  = "Test Product",
                ProductPrice = 9.99m,
                Quantity     = 3
            });

            var cartRepository = new StubIShoppingCartRepository
            {
                GetShoppingCartString = id => shoppingCart
            };
            var controller = new CartController(cartRepository, null);

            SetupControllerForTests(controller);

            // Act
            var result            = controller.Get("1");
            var returnedCartItems = new JavaScriptSerializer().Deserialize <ICollection <CartItem> >(result.Content.ReadAsStringAsync().Result);

            // Assert
            Assert.AreEqual(result.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(returnedCartItems.Count, shoppingCart.ShoppingCartItems.Count);
        }
コード例 #2
0
        public void ShouldRegisterUser()
        {
            // Arrange
            var registrationInfo = new RegistrationInfo()
            {
                Addresses = new List <AddressInfo>()
                {
                    new AddressInfo()
                    {
                        AddressLine1 = "123", City = "Redmond", CountryName = "USA", PostalCode = "12345", StateProvinceId = 33
                    }
                },
                CreditCards = new List <CreditCardInfo>()
                {
                    new CreditCardInfo()
                    {
                        CardNumber = "1111222233334444", CardType = "VISA", ExpMonth = 1, ExpYear = 2015
                    }
                },
                EmailAddresses = new List <string>()
                {
                    "*****@*****.**"
                },
                FirstName = "Test",
                LastName  = "User",
                Password  = "******"
            };

            var person = new Person()
            {
                PersonGuid = Guid.NewGuid()
            };

            var personRepository = new StubIPersonRepository()
            {
                SavePersonPerson = newPerson => person
            };
            var shoppingCartRepository = new StubIShoppingCartRepository()
            {
                GetShoppingCartString = shoppingCartId => new ShoppingCart(person.PersonGuid.ToString())
            };
            var orderRepository = new StubISalesOrderRepository()
            {
                IsOrderSavedGuid = shoppingCartId => false
            };
            var controller = new AccountController(personRepository, shoppingCartRepository, orderRepository, new StubIStateProvinceRepository());

            SetupControllerForTests(controller);

            // Act
            var result = controller.Register(registrationInfo);

            // Assert
            Assert.AreEqual(result.StatusCode, HttpStatusCode.Created);
        }
コード例 #3
0
        public void ShouldReturnNotFoundForCartItemsById()
        {
            // Arrange
            var cartRepository = new StubIShoppingCartRepository()
            {
                GetShoppingCartString = id => null
            };
            var controller = new CartController(cartRepository, null);

            SetupControllerForTests(controller);

            // Act
            var result = controller.Get("1");

            // Assert
            Assert.AreEqual(result.StatusCode, HttpStatusCode.NotFound);
        }
コード例 #4
0
        public void ShouldLogonUser()
        {
            // Arrange
            var person = new Person()
            {
                Id           = 1,
                PasswordHash = "/y5qFg+Su7P2S+iiVMKgSHzlSemQan2hYvZywrqSkTE=",
                PasswordSalt = "bE3XiWw=",
                PersonGuid   = Guid.NewGuid()
            };

            var logonInfo = new LoginInfo()
            {
                UserName = "******",
                Password = "******"
            };

            var personRepository = new StubIPersonRepository()
            {
                GetPersonByEmailString = emailAddress => person
            };
            var shoppingCartRepository = new StubIShoppingCartRepository()
            {
                GetShoppingCartString = shoppingCartId => new ShoppingCart(person.PersonGuid.ToString())
            };
            var orderRepository = new StubISalesOrderRepository()
            {
                IsOrderSavedGuid = shoppingCartId => false
            };
            var controller = new AccountController(personRepository, shoppingCartRepository, orderRepository, new StubIStateProvinceRepository());

            SetupControllerForTests(controller);

            // Act
            var result         = controller.Login(logonInfo);
            var returnedPerson = new JavaScriptSerializer().Deserialize <string>(result.Content.ReadAsStringAsync().Result);

            // Assert
            Assert.AreEqual(result.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(returnedPerson, person.PersonGuid.ToString());
        }
コード例 #5
0
        public void ShouldAddAnItemToANewCart()
        {
            // Arrange
            var targetShoppingCartSaved = false;

            var cartRepository = new StubIShoppingCartRepository
            {
                SaveShoppingCartShoppingCart = (cart) =>
                {
                    targetShoppingCartSaved = true;
                    return(cart);
                }
            };

            var productRepository = new StubIProductRepository
            {
                ProductExistsInt32 = productId => productId.Equals(1)
            };

            var controller = new CartController(cartRepository, productRepository);

            SetupControllerForTests(controller);

            // Act
            var result = controller.Add(new CartItem
            {
                ProductId    = 1,
                ProductName  = "Test Product",
                ProductPrice = 9.99m,
                Quantity     = 1
            });

            // Assert
            Assert.IsTrue(targetShoppingCartSaved);
            Assert.AreEqual(result.StatusCode, HttpStatusCode.Created);
        }
コード例 #6
0
        public void ShouldSaveOrder()
        {
            // Arrange
            var personGuid = Guid.NewGuid();

            var orderInfo = new OrderInfo()
            {
                BillingAddressId  = 1,
                CartId            = personGuid.ToString(),
                CreditCardId      = 1,
                ShippingAddressId = 1
            };

            var person = new Person()
            {
                Id = 1
            };

            person.AddAddress(new Address
            {
                Id           = 1,
                AddressLine1 = "street 1234",
                City         = "city",
                PostalCode   = "1001"
            });
            person.AddCreditCard(new CreditCard
            {
                Id         = 1,
                CardType   = "card",
                CardNumber = "1234567890123456",
                ExpMonth   = 11,
                ExpYear    = 2019
            });

            var address = new Address()
            {
                Id = 1
            };
            var creditCard = new CreditCard()
            {
                Id = 1
            };

            var shoppingCartItem = new ShoppingCartItem()
            {
                ProductId    = 1,
                ProductName  = "Test Product",
                ProductPrice = 1,
                Quantity     = 1
            };

            var shoppingCart = new ShoppingCart("1");

            shoppingCart.AddItem(shoppingCartItem);

            var inventoryService = new StubIInventoryService
            {
                InventoryAndPriceCheckShoppingCart = shoppingCartToCheck => false
            };

            var personRepository = new StubIPersonRepository
            {
                GetPersonGuid = personId => person,
            };

            var shoppingCartRepository = new StubIShoppingCartRepository
            {
                GetShoppingCartString = shoppingCartId => shoppingCart
            };

            var productRepository = new StubIProductRepository
            {
                GetProductInt32 = productId => new Product()
                {
                    Id = productId
                }
            };

            var controller = new OrdersController(
                new StubIOrderHistoryRepository(),
                shoppingCartRepository,
                personRepository,
                productRepository,
                new StubIOrderService(),
                inventoryService);

            SetupControllerForTests(controller);

            // Act
            var response = controller.Post(orderInfo);

            // Assert
            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
        }