public async void AddAddressAsync_Returns_NotFound_404_When_Create_With_null_Address()
        {
            //Configure Repository Mock
            _mockRepository.Setup(repo => repo.AddTAsync(null)).ReturnsAsync(0);
            string expectedMessage = "No Address was created";

            //instantiate the controller, and call the method
            var controller = new AddressesController(_mockRepository.Object, _mapper, _logger);

            //Create Custom ControllerContext and add it to Controller for logging in the Controller in case of error
            controller.ControllerContext = new ControllerContextModel();

            //Call the SUT method - returns ActionResult<BillableActivity> type
            var actionResult = await controller.AddAddressAsync(null);

            //Assert the result
            Assert.NotNull(actionResult);

            var result     = actionResult.Result as NotFoundObjectResult;
            var statusCode = result.StatusCode;
            var message    = result.Value;

            //Assert message
            Assert.Equal(expectedMessage, message);

            //Assert StatusCode
            Assert.Equal(404, statusCode);
        }
        public async void AddAddressAsync_Creates_One_Address_And_Returns_201_And_Address_Created()
        {
            //declare address
            Address    address     = _addresses.First();
            AddressDTO expectedDTO = _mapper.Map <AddressDTO>(address);

            //set mockRepo return for Add action
            _mockRepository.Setup(repo => repo.AddTAsync(address)).ReturnsAsync(1);

            //set repo return for getting the newly created object
            _mockRepository.Setup(repo => repo.GetOneByAsync(ad => ad.Client_Id == address.Client_Id &&
                                                             ad.StreetNumber == address.StreetNumber &&
                                                             ad.City == address.City)).ReturnsAsync(address);

            //instantiate the controller, passing the repo object
            var controller = new AddressesController(_mockRepository.Object, _mapper, _logger);

            //Call the SUT method
            var actionResult = await controller.AddAddressAsync(address);

            //Get the int result from the posted ActionResult
            var        createdResult = actionResult.Result as CreatedResult;
            var        statusCode    = createdResult.StatusCode;
            AddressDTO actualDto     = createdResult.Value as AddressDTO;

            //Assert the result
            Assert.NotNull(actionResult);

            //Validate returned status code
            Assert.Equal(201, statusCode);

            //Validate the result
            actualDto.Should().BeEquivalentTo(expectedDTO, options => options.ComparingByMembers <AddressDTO>());
        }