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); } }