public async Task AddNewItem_ControlProductStock_ReturnItemsCount(bool isSufficientStock, int cartItemsCount)
        {
            _mockStockRepo.Setup(repo => repo.ControlProductStock(It.IsAny <Entities.BasketCartItem>())).ReturnsAsync(isSufficientStock);

            var result = await _controller.ControlProductStock(It.IsAny <Entities.BasketCartItem>());

            var okResult = Assert.IsType <OkObjectResult>(result);

            var value = Assert.IsType <bool>(okResult.Value);

            //Get basket cart
            _mockBasketRepo.Setup(repo => repo.GetBasket(It.IsAny <string>())).ReturnsAsync(GetTestCart());
            var resultGetBasket = await _controller.GetBasket(It.IsAny <string>());

            var okResultGetBasket   = Assert.IsType <OkObjectResult>(resultGetBasket);
            var returnCartGetBasket = Assert.IsType <Entities.BasketCart>(okResultGetBasket.Value);

            if (value)
            {
                //Add new item to basket cart because product stock is sufficient.
                returnCartGetBasket.Items.Add(GetTestCartItem());

                //Update basket cart
                _mockBasketRepo.Setup(repo => repo.UpdateBasket(It.IsAny <Entities.BasketCart>())).ReturnsAsync(returnCartGetBasket);
                var resultUpdateBasket = await _controller.UpdateBasket(It.IsAny <Entities.BasketCart>());

                var okResultUpdateBasket   = Assert.IsType <OkObjectResult>(resultUpdateBasket);
                var returnCartUpdateBasket = Assert.IsType <Entities.BasketCart>(okResultUpdateBasket.Value);

                //Control cart item count
                Assert.Equal <int>(cartItemsCount, returnCartUpdateBasket.Items.Count);
            }
            else
            {
                // Product stock isn't sufficient so couldn't update basket cart.
                Assert.Equal <int>(cartItemsCount, returnCartGetBasket.Items.Count);
            }
        }