public async void ShouldReturnAShoppingListWhenItExists()
        {
            var shoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.UtcNow,
                LastUpdated    = DateTime.UtcNow
            };

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

            mockRepository.Setup(mock => mock.FindAsync(3))
            .ReturnsAsync(shoppingList);

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


            IActionResult result = await _controller.FindShoppingListAsync(3);


            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 ShouldReturnABadRequestResultWhenTheIdIsNull()
        {
            _repository = Mock.Of <IRepository <ShoppingList> >();
            _service    = new ShoppingListService(_repository);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.FindShoppingListAsync(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("The shopping list you are looking for is not valid."));
        }
        public async void ShouldReturnANotFoundResultWhenTheShoppingListDoesNotExist()
        {
            var mockRepository = new Mock <IRepository <ShoppingList> >();

            mockRepository.Setup(mock => mock.FindAsync(3))
            .ReturnsAsync(value: null);

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


            IActionResult result = await _controller.FindShoppingListAsync(3);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.NotFound &&
                                                 response.Message == null &&
                                                 response.Result == null);
        }