Polish weather phrasing for current and forecast replies
This commit is contained in:
@@ -44,17 +44,12 @@ public sealed class ProviderCachingTests
|
||||
Assert.NotNull(second);
|
||||
Assert.Equal(1, handler.GetCallCount("/geo/1.0/direct"));
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/weather"));
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/forecast"));
|
||||
Assert.Equal(0, handler.GetCallCount("/data/2.5/forecast"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task OpenWeatherReportProvider_EnrichesCurrentHiLoFromForecast_WhenCurrentBandIsFlat()
|
||||
public async Task OpenWeatherReportProvider_UsesCurrentHiLoForCurrentDay_WhenCurrentBandDiffers()
|
||||
{
|
||||
var utcStart = DateTimeOffset.UtcNow.UtcDateTime.Date;
|
||||
var forecastWindowStart = new DateTimeOffset(utcStart, TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
var forecastWindowMid = new DateTimeOffset(utcStart.AddHours(3), TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
var forecastWindowLate = new DateTimeOffset(utcStart.AddHours(6), TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
|
||||
var handler = new CountingHttpMessageHandler(message =>
|
||||
{
|
||||
var path = message.RequestUri?.AbsolutePath ?? string.Empty;
|
||||
@@ -63,9 +58,7 @@ public sealed class ProviderCachingTests
|
||||
"/geo/1.0/direct" => JsonResponse(
|
||||
"""[{"name":"Lone Jack","country":"US","lat":38.8708,"lon":-94.1733}]"""),
|
||||
"/data/2.5/weather" => JsonResponse(
|
||||
"""{"name":"Lone Jack","weather":[{"main":"Clouds","description":"overcast clouds"}],"main":{"temp":77.0,"temp_max":77.0,"temp_min":77.0}}"""),
|
||||
"/data/2.5/forecast" => JsonResponse(
|
||||
$"{{\"city\":{{\"timezone\":0}},\"list\":[{{\"dt\":{forecastWindowStart},\"main\":{{\"temp\":76.0,\"temp_max\":81.0,\"temp_min\":70.0}}}},{{\"dt\":{forecastWindowMid},\"main\":{{\"temp\":80.0,\"temp_max\":84.0,\"temp_min\":69.0}}}},{{\"dt\":{forecastWindowLate},\"main\":{{\"temp\":78.0,\"temp_max\":79.0,\"temp_min\":67.0}}}}]}}"),
|
||||
"""{"name":"Lone Jack","weather":[{"main":"Clouds","description":"overcast clouds"}],"main":{"temp":76.0,"temp_max":82.0,"temp_min":78.0}}"""),
|
||||
_ => new HttpResponseMessage(HttpStatusCode.NotFound)
|
||||
};
|
||||
});
|
||||
@@ -84,55 +77,11 @@ public sealed class ProviderCachingTests
|
||||
var report = await provider.GetReportAsync(new WeatherReportRequest("Lone Jack,US", null, null, false, false, 0));
|
||||
|
||||
Assert.NotNull(report);
|
||||
Assert.Equal(77, report!.Temperature);
|
||||
Assert.Equal(84, report.HighTemperature);
|
||||
Assert.Equal(67, report.LowTemperature);
|
||||
Assert.Equal(76, report!.Temperature);
|
||||
Assert.Equal(82, report.HighTemperature);
|
||||
Assert.Equal(76, report.LowTemperature);
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/weather"));
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/forecast"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task OpenWeatherReportProvider_UsesForecastHiLoForCurrentDay_WhenCurrentBandDiffers()
|
||||
{
|
||||
var utcStart = DateTimeOffset.UtcNow.UtcDateTime.Date;
|
||||
var forecastWindowStart = new DateTimeOffset(utcStart, TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
var forecastWindowMid = new DateTimeOffset(utcStart.AddHours(3), TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
var forecastWindowLate = new DateTimeOffset(utcStart.AddHours(6), TimeSpan.Zero).ToUnixTimeSeconds();
|
||||
|
||||
var handler = new CountingHttpMessageHandler(message =>
|
||||
{
|
||||
var path = message.RequestUri?.AbsolutePath ?? string.Empty;
|
||||
return path switch
|
||||
{
|
||||
"/geo/1.0/direct" => JsonResponse(
|
||||
"""[{"name":"Boston","country":"US","lat":42.3601,"lon":-71.0589}]"""),
|
||||
"/data/2.5/weather" => JsonResponse(
|
||||
"""{"name":"Boston","weather":[{"main":"Clouds","description":"overcast clouds"}],"main":{"temp":70.0,"temp_max":72.0,"temp_min":66.0}}"""),
|
||||
"/data/2.5/forecast" => JsonResponse(
|
||||
$"{{\"city\":{{\"timezone\":0}},\"list\":[{{\"dt\":{forecastWindowStart},\"main\":{{\"temp\":76.0,\"temp_max\":81.0,\"temp_min\":70.0}}}},{{\"dt\":{forecastWindowMid},\"main\":{{\"temp\":80.0,\"temp_max\":84.0,\"temp_min\":69.0}}}},{{\"dt\":{forecastWindowLate},\"main\":{{\"temp\":78.0,\"temp_max\":79.0,\"temp_min\":67.0}}}}]}}"),
|
||||
_ => new HttpResponseMessage(HttpStatusCode.NotFound)
|
||||
};
|
||||
});
|
||||
var provider = new OpenWeatherReportProvider(
|
||||
new HttpClient(handler),
|
||||
new OpenWeatherOptions
|
||||
{
|
||||
ApiKey = "test-key",
|
||||
CurrentCacheTtlSeconds = 300,
|
||||
ForecastCacheTtlSeconds = 300,
|
||||
GeocodeCacheTtlSeconds = 300,
|
||||
FailureCacheTtlSeconds = 30
|
||||
},
|
||||
NullLogger<OpenWeatherReportProvider>.Instance);
|
||||
|
||||
var report = await provider.GetReportAsync(new WeatherReportRequest("Boston,US", null, null, false, false, 0));
|
||||
|
||||
Assert.NotNull(report);
|
||||
Assert.Equal(70, report!.Temperature);
|
||||
Assert.Equal(84, report.HighTemperature);
|
||||
Assert.Equal(67, report.LowTemperature);
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/weather"));
|
||||
Assert.Equal(1, handler.GetCallCount("/data/2.5/forecast"));
|
||||
Assert.Equal(0, handler.GetCallCount("/data/2.5/forecast"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user