public async Task Can_Add_New_CartItem_Async() { var redisDb = this.InitializeRedis(); var client = this.GetClient(); var request = new AddCartItemRequest { ProductId = 46, UserId = 14, Quantity = 3 }; var userCartData = new UserCartData { UserId = request.UserId, CartItems = new Dictionary <int, int> { { request.ProductId, request.Quantity } } }; var serializedData = JsonConvert.SerializeObject(userCartData); string key = "cart:" + userCartData.UserId; await redisDb.KeyDeleteAsync(key); var response = await client.PostAsJsonAsync(Url, request); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var storedValue = await redisDb.StringGetAsync(key); Assert.Equal(serializedData, storedValue.ToString(), StringComparer.InvariantCulture); await redisDb.KeyDeleteAsync(key); }
public async Task <IActionResult> AddCartItem([FromRoute] int cartId, [FromBody] AddCartItemRequest request) { var userId = User.GetLoggedInUserId(); if (userId == null) { return(Unauthorized("Not logged in")); } var result = await cartService.AddCartItem(userId.Value, cartId, request.ProductId); return(this.ToResult(result)); }
public async Task <IActionResult> PostAsync(AddCartItemRequest request) { try { await this.cartItemService.AddCartItemAsync(request.ToCartItem()); return(this.Ok()); } catch (CartException exc) { return(this.BadRequest(exc.Message)); } }
public void Converts_To_CartItem() { Random rand = new Random(); var request = new AddCartItemRequest { ProductId = rand.Next(), UserId = rand.Next(), Quantity = rand.Next() }; var cartItem = request.ToCartItem(); Assert.Equal(request.ProductId, cartItem.ProductId); Assert.Equal(request.UserId, cartItem.UserId); Assert.Equal(request.Quantity, cartItem.Quantity); }
public async Task <IActionResult> AddCartItem([FromBody] AddCartItemRequest request) { if (!ModelState.IsValid) { return(BadRequest()); } // Usually, you would get userid from an access token, for example. This is hardcoded for simplicity. var userID = 1; if (!await mCartClient.AddCartItemAsync(userID, new XAddCartItemRequest { ProductID = request.ProductID.Value })) { return(NotFound()); } var cart = await mCartClient.GetCartByUserIDAsync(userID); var getproductTasks = cart.CartItems.Select(ci => mProductClient.GetProductAsync(ci.ProductID)).ToList(); var cartItems = new List <GetCartResponseItem>(); for (int i = 0; i < getproductTasks.Count; i++) { var product = await getproductTasks[i]; cartItems.Add(new GetCartResponseItem( id: cart.CartItems[i].ID, productID: product.ID, productName: product.Name, price: product.Price, quantity: cart.CartItems[i].Quantity )); } return(Ok(new GetCartResponse( id: cart.ID, totalPrice: cartItems.Sum(ci => ci.Price * ci.Quantity), cartItems: cartItems ))); }
public async Task <IActionResult> AddCartItemAsync([FromRoute] Guid cartId, [FromRoute] string sku, [FromBody] AddCartItemRequest request) { await _addCartItemHandler.ExecuteAsync( new AddCartItemCommand(cartId, sku, request.Name, request.SalePrice, request.Quantity, request.CustomerTopRated, request.Image)); return(Ok()); }