Exemple #1
0
        public HttpClient Get(string requestPostcode,
                              bool isValidPostcode,
                              PostcodeLookupResultData postcodeResponseData,
                              bool isTerminatedPostcode,
                              TerminatedPostcodeLookupResultData terminatedPostcodeResponseData)
        {
            var requests = new List <RequestWrapper>();

            if (isValidPostcode && postcodeResponseData != null)
            {
                requests.Add(new RequestWrapper
                {
                    Uri            = $"https://api.postcodes.io/postcodes/{Uri.EscapeDataString(requestPostcode)}",
                    ResponseObject =
                        //(isValidPostcode && postcodeResponseData != null) ?
                        (object)new PostcodeLookupResponse
                    {
                        Result = postcodeResponseData,
                        Status = "OK"
                    }
                    //:
                    //new ErrorResponse
                    //{
                    //    Error = "Invalid postcode",
                    //    Status = "NotFound"
                    //}
                });
            }

            if (isTerminatedPostcode && terminatedPostcodeResponseData != null)
            {
                requests.Add(new RequestWrapper
                {
                    Uri            = $"https://api.postcodes.io/terminated_postcodes/{Uri.EscapeDataString(requestPostcode)}",
                    ResponseObject =
                        //(isTerminatedPostcode && terminatedPostcodeResponseData != null) ?
                        (object)new TerminatedPostcodeLookupResponse
                    {
                        Result = terminatedPostcodeResponseData,
                        Status = "OK"
                    }
                    //:
                    //new ErrorResponse
                    //{
                    //    Error = "Terminated postcode not found",
                    //    Status = "NotFound"
                    //}
                });
            }

            return(CreateClient(requests));
        }
        public async Task Lookup_Postcode_Returns_Expected_Result()
        {
            var responseData = new PostcodeLookupResultData
            {
                Postcode  = "SW1A 2AA",
                Latitude  = "51.50354",
                Longitude = "-0.127695",
                Country   = "England",
                Region    = "London",
                Outcode   = "SW1A",
                //AdminDistrict = "Westminster",
                AdminCounty = null,
                Codes       = new PostcodeLookupLocationCodesData
                {
                    AdminDistrict             = "E09000033",
                    AdminCounty               = "E99999999",
                    AdminWard                 = "E05000644",
                    Parish                    = "E43000236",
                    ParliamentaryConstituency = "E14000639",
                    Ccg  = "E38000031",
                    Ced  = "E99999999",
                    Nuts = "UKI32"
                }
            };

            var httpClient = new PostcodesTestHttpClientFactory()
                             .Get("SW1A 2AA", true, responseData,
                                  false, null);

            var service = new LocationService(httpClient);

            //https://api.postcodes.io/postcodes/SW1A%202AA

            var result = await service.LookupPostcodeAsync("SW1A 2AA");

            result.Should().NotBeNull();

            result.Postcode.Should().Be("SW1A 2AA");
            result.Latitude.Should().Be(51.50354M);
            result.Longitude.Should().Be(-0.127695M);
            //TODO: Why is nested district code not deserialized?
            //result.DistrictCode.Should().Be("E09000033");
            result.IsTerminated.Should().BeFalse();
            result.TerminatedYear.Should().BeNull();
            result.TerminatedMonth.Should().BeNull();
        }