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(); }