Implement TimeProvider injection for deterministic timestamps across various services and modules
This commit is contained in:
@@ -48,19 +48,22 @@ public sealed class KpiCollector : IKpiCollector
|
||||
private readonly IVerdictRepository _verdictRepo;
|
||||
private readonly IReplayRepository _replayRepo;
|
||||
private readonly ILogger<KpiCollector> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
|
||||
public KpiCollector(
|
||||
IKpiRepository repository,
|
||||
IFindingRepository findingRepo,
|
||||
IVerdictRepository verdictRepo,
|
||||
IReplayRepository replayRepo,
|
||||
ILogger<KpiCollector> logger)
|
||||
ILogger<KpiCollector> logger,
|
||||
TimeProvider? timeProvider = null)
|
||||
{
|
||||
_repository = repository;
|
||||
_findingRepo = findingRepo;
|
||||
_verdictRepo = verdictRepo;
|
||||
_replayRepo = replayRepo;
|
||||
_logger = logger;
|
||||
_timeProvider = timeProvider ?? TimeProvider.System;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -200,7 +203,7 @@ public sealed class KpiCollector : IKpiCollector
|
||||
BreachesByEnvironment = breaches,
|
||||
OverridesGranted = overrides.Count,
|
||||
AvgOverrideAgeDays = overrides.Any()
|
||||
? (decimal)overrides.Average(o => (DateTimeOffset.UtcNow - o.GrantedAt).TotalDays)
|
||||
? (decimal)overrides.Average(o => (_timeProvider.GetUtcNow() - o.GrantedAt).TotalDays)
|
||||
: 0
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user