Exemplo n.º 1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
            [RequestBodyType(typeof(GetNumberOfAddressesPerPostcodeInBoundaryRequest), "Get Number Of Addresses Per Postcode In Boundary")] GetNumberOfAddressesPerPostcodeInBoundaryRequest req,
            CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInformation("C# HTTP trigger function processed a request.");


                if (req.IsValid(out var validationResults))
                {
                    GetNumberOfAddressesPerPostcodeInBoundaryResponse response = await _mediator.Send(req, cancellationToken);

                    return(new OkObjectResult(ResponseWrapper <GetNumberOfAddressesPerPostcodeInBoundaryResponse, AddressServiceErrorCode> .CreateSuccessfulResponse(response)));
                }
                else
                {
                    return(new ObjectResult(ResponseWrapper <GetNumberOfAddressesPerPostcodeInBoundaryResponse, AddressServiceErrorCode> .CreateUnsuccessfulResponse(AddressServiceErrorCode.ValidationError, validationResults))
                    {
                        StatusCode = 422
                    });;
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Unhandled error in {nameof(GetNumberOfAddressesPerPostcodeInBoundary)}", ex);
                return(new ObjectResult(ResponseWrapper <GetNumberOfAddressesPerPostcodeInBoundaryResponse, AddressServiceErrorCode> .CreateUnsuccessfulResponse(AddressServiceErrorCode.UnhandledError, "Internal Error"))
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
        }
Exemplo n.º 2
0
        public void SetUp()
        {
            _response = new GetNumberOfAddressesPerPostcodeInBoundaryResponse()
            {
                PostcodesWithNumberOfAddresses = new List <PostcodeWithNumberOfAddresses>()
                {
                    new PostcodeWithNumberOfAddresses()
                    {
                        NumberOfAddresses = 12,
                        Postcode          = "NG1 1AA"
                    }
                }
            };

            _mediator = new Mock <IMediator>();

            _mediator.Setup(x => x.Send(It.IsAny <GetNumberOfAddressesPerPostcodeInBoundaryRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(_response);

            _logger = new Mock <ILoggerWrapper <GetNumberOfAddressesPerPostcodeInBoundary> >();
            _logger.SetupAllProperties();
        }
Exemplo n.º 3
0
        public async Task GetNumberOfAddressesPerPostcodeInBoundaryResponse()
        {
            GetNumberOfAddressesPerPostcodeInBoundaryRequest request = new GetNumberOfAddressesPerPostcodeInBoundaryRequest()
            {
                SwLatitude  = 1,
                SwLongitude = 2,
                NeLatitude  = 3,
                NeLongitude = 4
            };

            GetNumberOfAddressesPerPostcodeInBoundaryHandler getNumberOfAddressesPerPostcodeInBoundaryHandler = new GetNumberOfAddressesPerPostcodeInBoundaryHandler(_repository.Object, _postcodeAndAddressGetter.Object);

            GetNumberOfAddressesPerPostcodeInBoundaryResponse result = await getNumberOfAddressesPerPostcodeInBoundaryHandler.Handle(request, CancellationToken.None);

            Assert.AreEqual(1, result.PostcodesWithNumberOfAddresses.Count);
            Assert.AreEqual(3, result.PostcodesWithNumberOfAddresses.FirstOrDefault().NumberOfAddresses);
            Assert.AreEqual("NG1 1AA", result.PostcodesWithNumberOfAddresses.FirstOrDefault().Postcode);

            _repository.Verify(x => x.GetPostcodesInBoundaryAsync(It.Is <double>(y => y == 1d), It.Is <double>(y => y == 2d), It.Is <double>(y => y == 3d), It.Is <double>(y => y == 4d)), Times.Once);

            _postcodeAndAddressGetter.Verify(x => x.GetNumberOfAddressesPerPostcodeAsync(It.Is <IEnumerable <string> >(y => y.Count() == 1 && y.Contains("NG1 1AA")), It.IsAny <CancellationToken>()));
        }