test(jobs): cover discovery browser journey
This commit is contained in:
@@ -31,6 +31,22 @@ public sealed class JobDiscoveryControllerTests
|
||||
Assert.Equal("NO", job.CountryCode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Search_keeps_latest_active_event_and_removes_inactive_duplicates()
|
||||
{
|
||||
var feed = """{"next_url":"","items":[{"date_modified":"2026-07-30T09:00:00Z","_feed_entry":{"uuid":"1","status":"ACTIVE","title":"Old title"}},{"date_modified":"2026-07-30T10:00:00Z","_feed_entry":{"uuid":"1","status":"ACTIVE","title":"Current title"}},{"date_modified":"2026-07-30T10:00:00Z","_feed_entry":{"uuid":"2","status":"ACTIVE","title":"Withdrawn"}},{"date_modified":"2026-07-30T11:00:00Z","_feed_entry":{"uuid":"2","status":"INACTIVE","title":"Withdrawn"}}]}""";
|
||||
var client = new HttpClient(new Handler(_ => feed));
|
||||
var configuration = new ConfigurationBuilder().AddInMemoryCollection(new Dictionary<string, string?> { ["NavJobs:Token"] = "configured-test-token" }).Build();
|
||||
var controller = new JobDiscoveryController(new ClientFactory(client), configuration, new MemoryCache(new MemoryCacheOptions()));
|
||||
|
||||
var result = await controller.Search(null, null, CancellationToken.None);
|
||||
|
||||
var ok = Assert.IsType<OkObjectResult>(result.Result);
|
||||
var job = Assert.Single(Assert.IsAssignableFrom<IReadOnlyList<JobDiscoveryController.DiscoveredJob>>(ok.Value));
|
||||
Assert.Equal("1", job.Id);
|
||||
Assert.Equal("Current title", job.Title);
|
||||
}
|
||||
|
||||
private sealed class ClientFactory(HttpClient client) : IHttpClientFactory
|
||||
{
|
||||
public HttpClient CreateClient(string name) => client;
|
||||
|
||||
Reference in New Issue
Block a user