public async void Realtime_JsonGermanCulture() { using var cultureJsonService = new ClimaCellService(_apiKey, jsonSerializerService: new JsonGermanCultureFixture()); var resp = await cultureJsonService.GetRealtime(_latitude, _longitude, ResponseFixture.RealtimeFields, new OptionalParamters { UnitSystem = "si" }); Assert.True(resp.Response.IsSuccessStatus); Assert.Equal("C", resp.Temp.Units); }
public async void Daily_JsonGermanCulture() { using var cultureJsonService = new ClimaCellService(_apiKey, jsonSerializerService: new JsonGermanCultureFixture()); var resp = await cultureJsonService.GetDaily(_latitude, _longitude, ResponseFixture.DailyFields, new OptionalParamters { UnitSystem = "si" }); Assert.True(resp.Response.IsSuccessStatus); Assert.NotEmpty(resp.DataPoints); Assert.Equal("C", resp.DataPoints[0].Temp.Min.Units); }
public ResponseFixture() { var mockClient = new Mock <IHttpClient>(); // Setup mockClient to take any string, and return MockRealtimeResponse mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockRealtimeResponse)); using (var climaRealtimeService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { // Remember, all this is doing is returning MockRealtimeResponse whose response content is populated by Realtime.Normal.json // so the passed fields do not matter at all NormalRealtimeResponse = climaRealtimeService.GetRealtime(Latitude, Longitude, new List <string> { "mockField" }).Result; } mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockNowcastResponse)); using (var climaNowcastService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { NormalNowcastResponse = climaNowcastService.GetNowcast(Latitude, Longitude, new List <string> { "mockField" }).Result; } mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockHourlyResponse)); using (var climaHourlyService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { NormalHourlyResponse = climaHourlyService.GetHourly(Latitude, Longitude, new List <string> { "mockField" }).Result; } mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockDailyResponse)); using (var climaDailyService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { NormalDailyResponse = climaDailyService.GetDaily(Latitude, Longitude, new List <string> { "mockField" }).Result; } // BadRequest / Unauthorized request mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockBadRequestResponse)); using (var climaDailyService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { BadRequestRealtimeResponse = climaDailyService.GetRealtime(Latitude, Longitude, new List <string> { "mockField" }).Result; } mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(MockInvalidAPIKeyRequest)); using (var climaDailyService = new ClimaCellService("FakeKey", httpClient: mockClient.Object)) { UnauthorizedRealtimeResponse = climaDailyService.GetRealtime(Latitude, Longitude, new List <string> { "mockField" }).Result; } }
public async void Nowcast_AllFieldsParsed() { var mockClient = new Mock <IHttpClient>(); mockClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns(Task.FromResult(ResponseFixture.MockNowcastResponse)); using (var service = new ClimaCellService("FakeKey", httpClient: mockClient.Object, jsonSerializerService: new JsonMissingMemberFixture())) { var resp = await service.GetNowcast(ResponseFixture.Latitude, ResponseFixture.Longitude, new List <string> { "mockField" }); Assert.True(resp.Response.IsSuccessStatus); } }
public void BuildRequestUri_ShouldMatch() { const string baseUri = @"https://api.climacell.co/v3/weather/"; var apiKey = "ABCD1234"; var fields = new List <string> { "temp", "feels_like", "dewpoint" }; var fieldString = Uri.EscapeUriString(String.Join(",", fields)); var expectedQueryString = new StringBuilder($"realtime?"); expectedQueryString.Append($"lat={ResponseFixture.Latitude:N4}&lon={ResponseFixture.Longitude:N4}"); expectedQueryString.Append($"&fields={fieldString}"); expectedQueryString.Append($"&apikey={apiKey}"); expectedQueryString.Append($"&start_time=2019-03-20T14:09:50"); expectedQueryString.Append($"×tep=10"); expectedQueryString.Append($"&unit_system=us"); var totalQuery = $"{baseUri}{expectedQueryString}"; var queryCheckClient = new Mock <IHttpClient>(); queryCheckClient.Setup(f => f.HttpRequestAsync(It.IsAny <string>())).Returns((string s) => Task.FromResult(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, ReasonPhrase = s })); using var serviceQueryCheck = new ClimaCellService(apiKey, new Uri(baseUri), queryCheckClient.Object); var parameters = new OptionalParamters { ForecastStartTime = DateTime.Parse("2019-03-20T14:09:50Z"), NowcastTimeStep = 10, UnitSystem = "us" }; var result = serviceQueryCheck.GetRealtime(ResponseFixture.Latitude, ResponseFixture.Longitude, fields, parameters).Result; Assert.Equal(totalQuery, result.Response.ReasonPhrase); Assert.True(result.Response.IsSuccessStatus); Assert.False(string.IsNullOrWhiteSpace(result.Response.DataSource)); Assert.False(string.IsNullOrWhiteSpace(result.Response.AttributionLine)); }
public async void Daily_AtleaseOneFieldIsRequired() { using var service = new ClimaCellService("ABCD1234"); await Assert.ThrowsAsync <ArgumentException>(async() => await service.GetDaily(42, -71, new List <string>())); }
public void Constructor_WithAPIKey() { using var service = new ClimaCellService("ABCD1234"); Assert.NotNull(service); }
public ClimaCellServiceIntegrationTests() { _apiKey = Environment.GetEnvironmentVariable(_apiEnvVar); Assert.False(string.IsNullOrWhiteSpace(_apiKey), $"You must set the environment variable {_apiEnvVar}"); _service = new ClimaCellService(_apiKey, jsonSerializerService: new JsonMissingMemberFixture()); }