Wetterdienst
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using LehrerApp.Core.Models;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.Api.Tests;
|
||||
|
||||
public sealed class NominatimGeocoderTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task GeocodeAsync_NutztStrukturierteDeutschlandSucheUndLiestDisplayName()
|
||||
{
|
||||
Uri? requestedUri = null;
|
||||
var handler = new RecordingHandler(request =>
|
||||
{
|
||||
requestedUri = request.RequestUri;
|
||||
return new HttpResponseMessage(HttpStatusCode.OK)
|
||||
{
|
||||
Content = new StringContent(
|
||||
"""[{"lat":"50.105","lon":"8.761","display_name":"Testschule, Offenbach, Deutschland"}]""",
|
||||
Encoding.UTF8, "application/json"),
|
||||
};
|
||||
});
|
||||
var http = new HttpClient(handler) { BaseAddress = new Uri("https://nominatim.openstreetmap.org/") };
|
||||
var geocoder = new NominatimGeocoder(http);
|
||||
|
||||
var result = await geocoder.GeocodeAsync(new SchoolLocationRequest
|
||||
{
|
||||
SchoolName = "Testschule", Street = "Schulweg 1", PostalCode = "63000", City = "Offenbach",
|
||||
}, CancellationToken.None);
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(50.105, result!.Latitude);
|
||||
Assert.Equal("Testschule, Offenbach, Deutschland", result.DisplayName);
|
||||
Assert.Contains("countrycodes=de", requestedUri!.Query);
|
||||
Assert.Contains("street=Schulweg%201", requestedUri.Query);
|
||||
Assert.Contains("postalcode=63000", requestedUri.Query);
|
||||
}
|
||||
|
||||
private sealed class RecordingHandler(Func<HttpRequestMessage, HttpResponseMessage> response)
|
||||
: HttpMessageHandler
|
||||
{
|
||||
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
|
||||
CancellationToken cancellationToken) => Task.FromResult(response(request));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user