public void GivenUPRN_WhenExecuteAsync_ThenMatchingCrossReferencesShouldBeReturned()
        {
            SetupValidatorToReturnValid();
            var crossReferences = new List <AddressCrossReference>
            {
                new AddressCrossReference
                {
                    UPRN    = 10024389298,
                    Code    = "", CrossRefKey = "",
                    Name    = "", Value = "",
                    EndDate = DateTime.Today
                }
            };

            var uprn    = 10024389298;
            var request = new GetPropertiesCrossReferenceRequest
            {
                uprn = uprn
            };

            _fakeGateway.Setup(s => s.GetAddressCrossReference(10024389298))
            .Returns(crossReferences);

            var response = _classUnderTest.ExecuteAsync(request);

            response.Should().NotBeNull();
            response.AddressCrossReferences.Count.Should().Be(1);
            response.AddressCrossReferences.First().UPRN.Should().Be(uprn);
        }
        public void GivenNullUprn_ShouldThrowValidationError()
        {
            //arrange
            var request = new GetPropertiesCrossReferenceRequest();

            //act & assert
            _classUnderTest.ShouldHaveValidationErrorFor(x => x.uprn, request)
            .WithErrorMessage("UPRN must be provided and must be numeric");
        }
        public void GivenValidInput_WhenExecuteAsync_GatewayReceivesCorrectInputLength()
        {
            SetupValidatorToReturnValid();
            var uprn = 1234578912;

            _fakeGateway.Setup(s => s.GetAddressCrossReference(1234578912)).Returns(new List <AddressCrossReference>()).Verifiable();

            var request = new GetPropertiesCrossReferenceRequest
            {
                uprn = uprn
            };

            _classUnderTest.ExecuteAsync(request);

            _fakeGateway.Verify();
        }
        public IActionResult GetPropertiesCrossReference(long uprn)
        {
            var request = new GetPropertiesCrossReferenceRequest {
                uprn = uprn
            };

            try
            {
                var response = _getPropertiesCrossReferenceUseCase.ExecuteAsync(request);
                return(new OkObjectResult(new APIResponse <GetPropertiesCrossReferenceResponse>(response)));
            }
            catch (BadRequestException e)
            {
                return(new BadRequestObjectResult(new ErrorResponse(e.ValidationResponse)));
            }
        }
예제 #5
0
        public GetPropertiesCrossReferenceResponse ExecuteAsync(GetPropertiesCrossReferenceRequest request)
        {
            var validationResponse = _getAddressCrossReferenceValidator.Validate(request);

            if (!validationResponse.IsValid)
            {
                throw new BadRequestException(validationResponse);
            }

            var response = _crossReferenceGateway.GetAddressCrossReference(request.uprn);

            var useCaseResponse = new GetPropertiesCrossReferenceResponse
            {
                AddressCrossReferences = response.ToResponse()
            };

            return(useCaseResponse);
        }
        public void GivenValidInput_WhenGatewayRespondsWithEmptyList_ThenResponseShouldBeEmptyList()
        {
            SetupValidatorToReturnValid();
            //arrange
            var uprn = 1234578912;

            _fakeGateway.Setup(s => s.GetAddressCrossReference(1234578912))
            .Returns(new List <AddressCrossReference>());

            var request = new GetPropertiesCrossReferenceRequest
            {
                uprn = uprn
            };
            //act
            var response = _classUnderTest.ExecuteAsync(request);

            //assert
            response.AddressCrossReferences.Count.Should().Be(0);
        }