示例#1
0
        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);
        }
示例#2
0
        /// <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));
        }