public async Task GetNearestSiteAsync_Success() { // Arrange var helper = new TestHelper(); var options = Options.Create(new GeocoderOptions() { Key = "test" }); var mockRequestClient = new Mock <IHttpRequestClient>(); var features = new FeatureModel() { Type = "Feature" }; var response = new HttpResponseMessage(HttpStatusCode.OK); var clientFactory = helper.CreateHttpClientFactory(response); mockRequestClient.Setup(m => m.Client).Returns(clientFactory.CreateClient()); mockRequestClient.Setup(m => m.GetAsync <FeatureModel>(It.IsAny <string>())).ReturnsAsync(features); var service = helper.Create <GeocoderService>(options, mockRequestClient.Object); var parameters = new NearestParameters() { Point = "123,456" }; // Act var result = await service.GetNearestSiteAsync(parameters); // Assert var url = "https://geocoder.api.gov.bc.ca/sites/nearest.json?point=123,456&excludeUnits=false&onlyCivic=false&outputSRS=4326&locationDescriptor=any&setBack=0&brief=false"; result.Should().NotBeNull(); mockRequestClient.Verify(m => m.GetAsync <FeatureModel>(url), Times.Once()); result.Should().Be(features); }
/// <summary> /// Sends an HTTP request to Geocoder for addresses that provides the closest match for the specified lat/lng. /// </summary> /// <param name="parameters">The nearest search paramenters</param> /// <param name="outputFormat">The output format. Defaults to "json"</param> /// <returns></returns> public async Task <FeatureModel> GetNearestSiteAsync(NearestParameters parameters, string outputFormat = "json") { var uri = new Uri(GenerateUrl(this.Options.Sites.NearestUrl, outputFormat)); var url = QueryHelpers.AddQueryString(uri.AbsoluteUri, parameters.ToQueryStringDictionary()); return(await this.Client.GetAsync <FeatureModel>(url)); }