public async void ShouldReturnAnOkResultWhenTheUpdateIsSuccessful()
        {
            var updatedShoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.Now,
                LastUpdated    = DateTime.Now
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            _service    = new ShoppingListService(mockRepository.Object);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.UpdateShoppingList(updatedShoppingList);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.OK &&
                                                 response.Message == null &&
                                                 response.Result == null);
        }
        public async void ShouldReturnABadRequestWhenTheUpdatedShoppingListIsNull()
        {
            _service    = Mock.Of <IShoppingListService <IApiResponse> >();
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.UpdateShoppingList(null);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.BadRequest &&
                                                 response.Result == null &&
                                                 response.Message.Equals("Cannot update an invalid shopping list."));
        }
        public async void ShouldCallTheRepositoryOnceWhenUpdatingAShoppingList()
        {
            var updatedShoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.Now,
                LastUpdated    = DateTime.Now
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            _service    = new ShoppingListService(mockRepository.Object);
            _controller = new ShoppingListController(_service);


            await _controller.UpdateShoppingList(updatedShoppingList);


            mockRepository.Verify(mock => mock.UpdateAsync(updatedShoppingList), Times.Once);
        }