public async Task CreateUproccessedOrder_ThrowsException_WhenShoppingCartIsEmptyOrNull() { MapperInitializer.InitializeMapper(); var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var orderRepository = new EfDeletableEntityRepository <Order>(context); var userTestSeeder = new UserTestSeeder(); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); //seed user await userTestSeeder.SeedUsersWithAddressesAsync(context); var userWithoutProducts = context.Users.First(x => x.UserName == "UserWithoutAddresses"); var orderCreateInputModel = new OrderCreateInputModel() { }; var orderService = this.GetOrderService(orderRepository, context); await Assert.ThrowsAsync <ArgumentNullException>(async() => { await orderService.CreateUproccessedOrder(orderCreateInputModel, null); }); await Assert.ThrowsAsync <ArgumentNullException>(async() => { await orderService.CreateUproccessedOrder(orderCreateInputModel, userWithoutProducts.ShoppingCart.Id); }); }
public async Task QuantityEdit_EdistTheQuantityCorectly() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var shoppingCartProductsRepository = new EfDeletableEntityRepository <ShoppingCartProduct>(context); var shoppingCartProductService = this.GetShoppingCartProductService(shoppingCartProductsRepository, context); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); await shoppingCartProductSeeder.SeedProducts(context); await Assert.ThrowsAsync <ArgumentNullException>(async() => { await shoppingCartProductService.QuantityEdit(null, 0, null); }); }
public async Task AddAsync_ThrowsExceptionIf_ShoppingCartIdOrProductIdAreNull() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var shoppingCartProductsRepository = new EfDeletableEntityRepository <ShoppingCartProduct>(context); var shoppingCartProductService = this.GetShoppingCartProductService(shoppingCartProductsRepository, context); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); await shoppingCartProductSeeder.SeedProducts(context); await Assert.ThrowsAsync <ArgumentNullException>(async() => { await shoppingCartProductService.AddAsync(null, null); }); }
public async Task RemoveDisabledProducts_ReturnsTrueIfProductsWereDeleted() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var shoppingCartProductsRepository = new EfDeletableEntityRepository <ShoppingCartProduct>(context); var shoppingCartProductService = this.GetShoppingCartProductService(shoppingCartProductsRepository, context); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); await shoppingCartProductSeeder.SeedDisabledProduct(context); var shouldBeTrue = await shoppingCartProductService.RemoveDisabledProducts("1"); Assert.True(shouldBeTrue); }
public async Task AddAsync_ShouldReturnTrueOrFalse_DependingOnTheParams() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var shoppingCartProductsRepository = new EfDeletableEntityRepository <ShoppingCartProduct>(context); var shoppingCartProductService = this.GetShoppingCartProductService(shoppingCartProductsRepository, context); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); await shoppingCartProductSeeder.SeedProducts(context); var shouldReturnTrue = await shoppingCartProductService.AddAsync("1", "4"); var shouldReturnFalse = await shoppingCartProductService.AddAsync("2", "1"); Assert.True(shouldReturnTrue); Assert.False(shouldReturnFalse); }
public async Task CreateUnproccessedOrder_RemovesProductsFromShoppingCart_ProperlyCreatesAnOrderWithTheProducts() { MapperInitializer.InitializeMapper(); var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var orderRepository = new EfDeletableEntityRepository <Order>(context); var userTestSeeder = new UserTestSeeder(); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); var productsTestSeeder = new ProductsTestSeeder(); //seed products await productsTestSeeder.SeedProducts(context); //seed users await userTestSeeder.SeedUsersWithAddressesAsync(context); var userWithProducts = context.Users.First(x => x.UserName == "UserWithoutAddresses"); //seed products in shoppingCart for user await shoppingCartProductSeeder.SeedProductsToUser(context, userWithProducts); var orderCreateInputModel = new OrderCreateInputModel() { UserId = userWithProducts.Id, }; var orderService = this.GetOrderService(orderRepository, context); await orderService.CreateUproccessedOrder(orderCreateInputModel, userWithProducts.ShoppingCart.Id); var actualShoppingCartCount = userWithProducts.ShoppingCart.ShoppingCartProducts.Count(); var actualOrderCount = context.Orders.Count(); var order = context.Orders.FirstOrDefault(); var deliveryPrice = userWithProducts.ShoppingCart.ShoppingCartProducts.Sum(x => x.Quantity * x.Product.Price) >= 20m ? 0m : 3.5m; var totalPrice = userWithProducts.ShoppingCart.ShoppingCartProducts.Sum(x => x.Quantity * x.Product.Price) + deliveryPrice; Assert.Equal(OrderStatus.UnProccessed, order.OrderStatus); Assert.Equal(deliveryPrice, order.DeliveryPrice); Assert.Equal(totalPrice, order.TotalPrice); Assert.Equal(0, actualShoppingCartCount); Assert.Equal(1, actualOrderCount); }
public async Task GetProductsCountAsync_FunctionsCorrectly() { var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var shoppingCartRepository = new EfDeletableEntityRepository <ShoppingCart>(context); var shoppingCartService = new ShoppingCartService(shoppingCartRepository); var userSeeder = new UserTestSeeder(); await userSeeder.SeedUsersWithAddressesAsync(context); var user = context.Users.First(x => x.UserName == "UserWithoutAddresses"); var shoppingCartProductSeeder = new ShoppingCartProductSeeder(); await shoppingCartProductSeeder.SeedProductsToUser(context, user); var resultCount = await shoppingCartService.GetProductsCountAsync(user.Id); var actualCount = user.ShoppingCart.ShoppingCartProducts.Select(x => x.Product).Count(); Assert.Equal(actualCount, resultCount); await Assert.ThrowsAsync <ArgumentNullException>(async() => { await shoppingCartService.GetProductsCountAsync(null); }); }