public async Task CheckoutAsync_When_CartIsValid_Then_CartIsCheckedOut() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); fixture.Customize <CartItem>().Set(x => x.ProductId, 2); fixture.Customize <CartItem>().Set(x => x.Quantity, 10); fixture.Customize <Product>().Set(x => x.Stock, int.MaxValue); var cart = fixture.Generate <Cart>(); var product = fixture.Generate <Product>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.CheckoutAsync(cart.Name, (x) => Task.FromResult(product)); // Assert cart.IsCheckedOut.Should().BeTrue(); product.Stock.Should().Be(int.MaxValue - cart.Items.Sum(x => x.Quantity)); }
public void Repository_Always_Returns_A_Non_Null_Cart() { var repository = new InMemoryCartRepository(); var cart = repository.Get(Guid.NewGuid().ToString()); Check.That(cart).IsNotNull(); }
public void return_a_not_null_cart() { var repository = new InMemoryCartRepository(); var cart = repository.Get(Guid.NewGuid().ToString()); Check.That(cart).IsNotNull(); }
public async Task AddItemToCart_When_CartNotFound_Then_ExceptionIsThrown() { // Arrange dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(Enumerable.Empty <Cart>()); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(string.Empty, (x) => Task.FromResult(null as Product), null); // Assert Exception }
public async Task GetByNameAsync_When_ProductNotFound_Then_ExceptionIsThrown() { // Arrange dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(Enumerable.Empty <Cart>()); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.GetAsync(x => x.Name == string.Empty); // Assert exception }
public async Task CheckoutAsync_When_CartNotFound_Then_ExceptionsIsThrown() { // Arrange dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(Enumerable.Empty <Cart>()); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.CheckoutAsync(string.Empty, null); // Assert Exception }
public void Add_A_Product_On_A_Cart_Adds_A_ProductInfo_Item() { var repository = new InMemoryCartRepository(); var id = Guid.NewGuid().ToString(); repository.AddProduct(id, "product1"); var cart = repository.Get(id); var productInfo = cart.Products.FirstOrDefault(p => p.Id == "product1"); Check.That(productInfo).IsNotNull(); Check.That(productInfo.Count).IsEqualTo(1); }
public void add_product_info_when_a_product_is_added_into_the_cart() { var repository = new InMemoryCartRepository(); var id = Guid.NewGuid().ToString(); repository.AddProduct(id, "product1"); var cart = repository.Get(id); var productInfo = cart.Products.FirstOrDefault(p => p.Id == "product1"); Check.That(productInfo).IsNotNull(); Check.That(productInfo.Count).IsEqualTo(1); }
public void do_nothing_when_a_product_is_added_and_then_removed_twice() { var repository = new InMemoryCartRepository(); var id = Guid.NewGuid().ToString(); repository.AddProduct(id, "product1"); repository.RemoveProduct(id, "product1"); var cart = repository.Get(id); Check.That(cart.Products).IsEmpty(); }
public void Removing_An_Non_Added_Product_Does_Nothing() { var repository = new InMemoryCartRepository(); var id = Guid.NewGuid().ToString(); repository.RemoveProduct(id, "product1"); var cart = repository.Get(id); Check.That(cart.Products).IsEmpty(); }
public void do_nothing_when_trying_to_remove_a_non_added_product() { var repository = new InMemoryCartRepository(); var id = Guid.NewGuid().ToString(); repository.RemoveProduct(id, "product1"); var cart = repository.Get(id); Check.That(cart.Products).IsEmpty(); }
public async Task CheckoutAsync_When_ProductNotFound_Then_ExceptionsIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.CheckoutAsync(cart.Name, (x) => throw new ProdcutNotFoundException()); // Assert Exception }
public async Task AddItemToCart_When_CartIsCheckedOut_Then_ExceptionIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, true); var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(null as Product), null); //Assert Exception }
public async Task CheckoutAsync_When_InsufficientStock_Then_ExceptionsIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); fixture.Customize <CartItem>().Set(x => x.ProductId, 2); fixture.Customize <CartItem>().Set(x => x.Quantity, 10); var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.CheckoutAsync(cart.Name, (x) => Task.FromResult(fixture.Generate <Product>(constraints: new { Stock = 15 }))); }
public async Task GetByNameAsync_When_ProductNotFound_Then_ProductIsReturned() { // Arrange var cart = fixture.Generate <Cart>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart>() { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act var result = await repository.GetAsync(x => x.Name == cart.Name); // Assert result.Should().NotBeNull(); result.Should().Be(cart); }
public async Task AddItemToCart_When_ProductOutOfStock_Then_ExceptionIsThrown() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); var cartItem = fixture.Generate <CartItem>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(fixture.Generate <Product>(constraints: new { Stock = cartItem.Quantity - 1 })), cartItem); // Assert Exception }
public async Task AddItemToCart_When_DataIsValid_Then_ItemIsAdded() { // Arrange fixture.Customize <Cart>().Set(x => x.IsCheckedOut, false); var cart = fixture.Generate <Cart>(); var cartItem = fixture.Generate <CartItem>(); dataProvider.Setup(x => x.ProvideAsync()) .ReturnsAsync(new List <Cart> { cart }); var repository = new InMemoryCartRepository(dataProvider.Object); // Act await repository.AddItemToCartAsync(cart.Name, (x) => Task.FromResult(fixture.Generate <Product>(constraints: new { Stock = cartItem.Quantity })), cartItem); // Assert cart.Items.Should().Contain(cartItem); }
static void Main(string[] args) { using (var context = new DataContext()) { var inventoryRepo = new InventoryRepository(context); var cartRepo = new InMemoryCartRepository(); //define business manager and repository var inventoryManager = new InventoryManager(inventoryRepo); var cartManager = new CartManager(cartRepo, inventoryRepo); ConsoleKeyInfo keyPressed = default(ConsoleKeyInfo); do { WriteLine("1 - List Products"); WriteLine("2 - Display Cart Items"); WriteLine("3 - Add Item to Cart"); WriteLine("4 - Place Order"); WriteLine("Press Command.. Q to exit"); keyPressed = ReadKey(); WriteLine(""); switch (keyPressed.Key) { case ConsoleKey.D1: //List Products var products = inventoryManager.GetProducts(); WriteLine("================ INVENTORY =================="); foreach (var prod in products) { WriteLine($"{prod.ProductId} - {prod.Name} {prod.Price}"); } break; case ConsoleKey.D2: //Display Cart Items var items = cartManager.GetCartItems(); if (items.Any()) { WriteLine("================ CART =================="); foreach (var item in items) { WriteLine($"{item.Quantity} - {item.Product.Name} {item.Product.Price}"); } } else { WriteLine($"No cart item for user Please add item"); } break; case ConsoleKey.D3: //Add Item to Cart WriteLine("Specify the Product id"); //get userid string id = ReadLine(); var productId = int.Parse(id); bool result = cartManager.AddCartItem(productId); if (result) { WriteLine("item added to cart"); } else { WriteLine("invalid data or error occurred"); } break; } WriteLine(Environment.NewLine); } while (keyPressed.Key != ConsoleKey.Q); } }