Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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
                          )));
        }
Example #6
0
        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());
        }