test(workers): prove clock and restart safety
This commit is contained in:
@@ -10,7 +10,8 @@ public sealed class FollowUpReminderHostedService(
|
||||
IConfiguration configuration,
|
||||
ILogger<FollowUpReminderHostedService> logger,
|
||||
IStartupReadiness startupReadiness,
|
||||
ExternalOrigin externalOrigin) : BackgroundService
|
||||
ExternalOrigin externalOrigin,
|
||||
TimeProvider timeProvider) : BackgroundService
|
||||
{
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
@@ -21,11 +22,11 @@ public sealed class FollowUpReminderHostedService(
|
||||
return;
|
||||
}
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(10), stoppingToken);
|
||||
await Task.Delay(TimeSpan.FromSeconds(10), timeProvider, stoppingToken);
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
await RunOnceAsync(stoppingToken);
|
||||
await Task.Delay(TimeSpan.FromHours(6), stoppingToken);
|
||||
await Task.Delay(TimeSpan.FromHours(6), timeProvider, stoppingToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +46,7 @@ public sealed class FollowUpReminderHostedService(
|
||||
var users = services.GetRequiredService<UserManager<ApplicationUser>>();
|
||||
var email = services.GetRequiredService<IAppEmailSender>();
|
||||
var settings = await RulesEngine.GetSettings(db, cancellationToken);
|
||||
var now = DateTime.Now;
|
||||
var now = timeProvider.GetLocalNow().DateTime;
|
||||
var lookAheadDays = Math.Clamp(configuration.GetValue("Email:FollowUpReminders:UpcomingDays", 2), 1, 14);
|
||||
var upcomingTo = now.AddDays(lookAheadDays);
|
||||
var lastMessages = await db.Correspondences.AsNoTracking()
|
||||
|
||||
Reference in New Issue
Block a user