public async Task AddProductToUserCartTests() { //Arrange var mapperConfig = new MapperConfiguration(x => x.AddProfile(new MappingProfile())); var mapper = mapperConfig.CreateMapper(); var cartService = new CartService(this.context, mapper); var product = new Mock <Product>().Object; product.Id = "Test-id"; var productBindingModel = new BuyProductBindingModel { Id = product.Id, Quant = 3, }; var user = new Mock <User>().Object; //Act Assert.Equal(0, context.CartProducts.Count()); await cartService.AddProductToUserCart(productBindingModel, user); //Assert Assert.Equal(1, context.CartProducts.Count()); }
public async Task <IActionResult> SingleProduct(BuyProductBindingModel model) { if (!this.ModelState.IsValid) { return(await this.SingleProduct(model.Id, model.Quant)); } var currentUser = await this.userManager.GetUserAsync(this.User); await this.cartService.AddProductToUserCart(model, currentUser); return(this.Redirect("/Cart/Index")); }
public async Task AddProductToUserCart(BuyProductBindingModel model, User user) { var currentOrder = await this.context.CartProducts .FirstOrDefaultAsync(cp => cp.CartId == user.CartId && cp.ProductId == model.Id); if (currentOrder == null) { await this.context.CartProducts.AddAsync(new CartProduct { CartId = user.CartId, ProductId = model.Id, Quantity = model.Quant, }); } else { currentOrder.Quantity = model.Quant; } await this.context.SaveChangesAsync(); }