public async Task GetCoordinatesFromAddress_ReturnsNull_WhenNotSuccessStatusCode() { var httpClient = new Mock <IHttpClient>(); httpClient.Setup(x => x.GetAsync(It.IsAny <string>())).ReturnsAsync(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)); var options = new Mock <IOptions <MappingSettings> >(); options.Setup(x => x.Value).Returns(new MappingSettings { GoogleMapsApiKey = "123" }); var sut = new GoogleGeocodeService(httpClient.Object, options.Object); var result = await sut.GetCoordinatesFromAddress("address"); result.ShouldBeNull(); }
public async Task GetCoordinatesFromAddress_CallsHttpClientGetAsync_Once() { var httpClient = new Mock <IHttpClient>(); httpClient.Setup(x => x.GetAsync(It.IsAny <string>())).ReturnsAsync(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)); var options = new Mock <IOptions <MappingSettings> >(); options.Setup(x => x.Value).Returns(new MappingSettings { GoogleMapsApiKey = "123" }); var sut = new GoogleGeocodeService(httpClient.Object, options.Object); await sut.GetCoordinatesFromAddress("address"); httpClient.Verify(x => x.GetAsync(It.IsAny <string>()), Times.Once); }
public async Task GetCoordinatesFromAddress_ReturnsNull_WhenExceptionThrown() { var httpClient = new Mock <IHttpClient>(); httpClient.Setup(x => x.GetAsync(It.IsAny <string>())).Throws <Exception>(); var options = new Mock <IOptions <MappingSettings> >(); options.Setup(x => x.Value).Returns(new MappingSettings { GoogleMapsApiKey = "123" }); var sut = new GoogleGeocodeService(httpClient.Object, options.Object); var result = await sut.GetCoordinatesFromAddress("address"); result.ShouldBeNull(); }
public async Task GetCoordinatesFromAddress_WithIndividualAddressParams_CallsHttpClientGetAsync_WithCorrectUrl() { var url = string.Empty; var httpClient = new Mock <IHttpClient>(); httpClient.Setup(x => x.GetAsync(It.IsAny <string>())).ReturnsAsync(new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)).Callback <string>(x => url = x); var options = new Mock <IOptions <MappingSettings> >(); options.Setup(x => x.Value).Returns(new MappingSettings { GoogleMapsApiKey = "123" }); var sut = new GoogleGeocodeService(httpClient.Object, options.Object); await sut.GetCoordinatesFromAddress("1 some street", "town", "state", "postcode", null); url.ShouldBe(string.Concat("https://maps.googleapis.com/maps/api/geocode/json?address=", "1%20some%20street,town,state,postcode", "&key=", "123")); }
public async Task GetCoordinatesFromAddress_ReturnsCorrectCoordinates_WhenValidGoogleResponse() { var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK); response.Content = new StringContent(ValidGoogleResponse); var httpClient = new Mock <IHttpClient>(); httpClient.Setup(x => x.GetAsync(It.IsAny <string>())).ReturnsAsync(response); var options = new Mock <IOptions <MappingSettings> >(); options.Setup(x => x.Value).Returns(new MappingSettings { GoogleMapsApiKey = "123" }); var sut = new GoogleGeocodeService(httpClient.Object, options.Object); var result = await sut.GetCoordinatesFromAddress("address"); result.Latitude.ShouldBe(37.4224764); result.Longitude.ShouldBe(-122.0842499); }