public async Task UpdateShoppingCartItemsAsync_WhenCalledWithClearCartShoppingCartActionWithEmptyShoppingCart_ReturnsFalse() { // Arrange int pieId = 1; var pie = SeedPieData(pieId); var shoppingCartAction = new Models.ShoppingCartAction { PieId = pieId, Action = "CLEAR_CART", Quantity = 1 }; mockPieService.Setup(m => m.GetPieAsync(shoppingCartAction.PieId)).ReturnsAsync(pie); mockShoppingCartService.Setup(m => m.ClearShoppingCartAsync()).ReturnsAsync(0); // Act var result = await sut.UpdateShoppingCartItemsAsync(shoppingCartAction); // Assert var actionResult = Assert.IsAssignableFrom <ActionResult <bool> >(result); var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult.Result); var model = Assert.IsAssignableFrom <bool>(okObjectResult.Value); Assert.False(model); mockPieService.Verify(m => m.GetPieAsync(shoppingCartAction.PieId), Times.Never); mockShoppingCartService.Verify(m => m.ClearShoppingCartAsync(), Times.Once); }
public async Task UpdateShoppingCartItemsAsync_WhenCalledWithRemoveItemShoppingCartActionAndPieIdInShoppingCart_ReturnsTrue() { // Arrange int pieId = 1; var pie = SeedPieData(pieId); var shoppingCartAction = new Models.ShoppingCartAction { PieId = pieId, Action = "REMOVE_ITEM", Quantity = 1 }; mockPieService.Setup(m => m.GetPieAsync(shoppingCartAction.PieId)).ReturnsAsync(pie); mockShoppingCartService.Setup(m => m.RemoveShoppingCartItemAsync(shoppingCartAction.PieId)).ReturnsAsync(1); // Act var result = await sut.UpdateShoppingCartItemsAsync(shoppingCartAction); // Assert var actionResult = Assert.IsAssignableFrom <ActionResult <bool> >(result); var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult.Result); var model = Assert.IsAssignableFrom <bool>(okObjectResult.Value); Assert.True(model); mockPieService.Verify(m => m.GetPieAsync(shoppingCartAction.PieId), Times.Once); mockShoppingCartService.Verify(m => m.RemoveShoppingCartItemAsync(shoppingCartAction.PieId), Times.Once); }
public async Task UpdateShoppingCartItemsAsync_WhenCalledWithDecreaseItemQuantityShoppingCartActionAndPieIdNotInShoppingCart_ReturnsFalse() { // Arrange int pieId = 1; var pie = SeedPieData(pieId); var shoppingCartAction = new Models.ShoppingCartAction { PieId = pieId, Action = "DECREASE_ITEM_QUANTITY", Quantity = 1 }; mockPieService.Setup(m => m.GetPieAsync(shoppingCartAction.PieId)).ReturnsAsync(pie); mockShoppingCartService.Setup(m => m.DecreaseShoppingCartItemQuantityAsync(shoppingCartAction.PieId, shoppingCartAction.Quantity)).ReturnsAsync(0); // Act var result = await sut.UpdateShoppingCartItemsAsync(shoppingCartAction); // Assert var actionResult = Assert.IsAssignableFrom <ActionResult <bool> >(result); var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult.Result); var model = Assert.IsAssignableFrom <bool>(okObjectResult.Value); Assert.False(model); mockPieService.Verify(m => m.GetPieAsync(shoppingCartAction.PieId), Times.Once); mockShoppingCartService.Verify(m => m.DecreaseShoppingCartItemQuantityAsync(shoppingCartAction.PieId, shoppingCartAction.Quantity), Times.Once); }
public async Task UpdateShoppingCartItemsAsync_WhenCalledWithInvalidShoppingCartAction_ReturnsBadRequest() { // Arrange int pieId = 1; var pie = SeedPieData(pieId); var shoppingCartAction = new Models.ShoppingCartAction { PieId = pieId, Action = "Invalid_Action", Quantity = 1 }; mockPieService.Setup(m => m.GetPieAsync(shoppingCartAction.PieId)).ReturnsAsync(pie); // Act var result = await sut.UpdateShoppingCartItemsAsync(shoppingCartAction); // Assert var actionResult = Assert.IsAssignableFrom <ActionResult <bool> >(result); var badRequestObjectResult = Assert.IsAssignableFrom <BadRequestObjectResult>(actionResult.Result); Assert.Equal(ErrorMessage.InvalidData(Constant.BadRequest, typeof(Models.ShoppingCartAction), Constant.Action, shoppingCartAction.Action), badRequestObjectResult.Value); mockPieService.Verify(m => m.GetPieAsync(shoppingCartAction.PieId), Times.Never); }
public async Task UpdateShoppingCartItemsAsync_WhenCalledWithInvalidPieId_ReturnsBadRequest() { // Arrange int pieId = 7; var pie = default(Entities.Pie); var shoppingCartAction = new Models.ShoppingCartAction { PieId = pieId, Action = "INCREASE_ITEM_QUANTITY", Quantity = 1 }; mockPieService.Setup(m => m.GetPieAsync(shoppingCartAction.PieId)).ReturnsAsync(pie); // Act var result = await sut.UpdateShoppingCartItemsAsync(shoppingCartAction); // Assert var actionResult = Assert.IsAssignableFrom <ActionResult <bool> >(result); var badRequestObjectResult = Assert.IsAssignableFrom <BadRequestObjectResult>(actionResult.Result); Assert.Equal(ErrorMessage.InvalidData(Constant.BadRequest, typeof(Models.Pie), Constant.Id, shoppingCartAction.PieId.ToString()), badRequestObjectResult.Value); mockPieService.Verify(m => m.GetPieAsync(shoppingCartAction.PieId), Times.Once); }
public async Task <ActionResult <bool> > UpdateShoppingCartItemsAsync(Models.ShoppingCartAction shoppingCartAction) { int count = 0; if (shoppingCartAction.Action.ToUpperInvariant() == "CLEAR_CART") { count = await shoppingCartService.ClearShoppingCartAsync(); } else if (shoppingCartAction.Action.ToUpperInvariant() == "INCREASE_ITEM_QUANTITY" || shoppingCartAction.Action.ToUpperInvariant() == "DECREASE_ITEM_QUANTITY" || shoppingCartAction.Action.ToUpperInvariant() == "REMOVE_ITEM") { var pie = await pieService.GetPieAsync(shoppingCartAction.PieId); if (pie == null) { return(BadRequest(ErrorMessage.InvalidData(Constant.BadRequest, typeof(Models.Pie), Constant.Id, shoppingCartAction.PieId.ToString()))); } if (shoppingCartAction.Action.ToUpperInvariant() == "INCREASE_ITEM_QUANTITY") { count = await shoppingCartService.IncreaseShoppingCartItemQuantityAsync(shoppingCartAction.PieId, shoppingCartAction.Quantity); } else if (shoppingCartAction.Action.ToUpperInvariant() == "DECREASE_ITEM_QUANTITY") { count = await shoppingCartService.DecreaseShoppingCartItemQuantityAsync(shoppingCartAction.PieId, shoppingCartAction.Quantity); } else if (shoppingCartAction.Action.ToUpperInvariant() == "REMOVE_ITEM") { count = await shoppingCartService.RemoveShoppingCartItemAsync(shoppingCartAction.PieId); } } else { return(BadRequest(ErrorMessage.InvalidData(Constant.BadRequest, typeof(Models.ShoppingCartAction), Constant.Action, shoppingCartAction.Action))); } return(Ok(count > 0)); }