Exemplo n.º 1
0
        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);
        }
Exemplo n.º 6
0
        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);
            });
        }