feat(notification-outbox): actor handler for per-site KPI requests
This commit is contained in:
@@ -356,4 +356,46 @@ public class NotificationOutboxActorQueryTests : TestKit
|
||||
Assert.Equal(0, response.DeliveredLastInterval);
|
||||
Assert.Null(response.OldestPendingAge);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PerSiteKpiRequest_RepliesWithPerSiteSnapshots()
|
||||
{
|
||||
_repository.ComputePerSiteKpisAsync(
|
||||
Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<CancellationToken>())
|
||||
.Returns(new List<SiteNotificationKpiSnapshot>
|
||||
{
|
||||
new("plant-a", 4, 1, 0, 9, TimeSpan.FromMinutes(7)),
|
||||
});
|
||||
var actor = CreateActor();
|
||||
|
||||
actor.Tell(new PerSiteNotificationKpiRequest("corr-ps"), TestActor);
|
||||
|
||||
var response = ExpectMsg<PerSiteNotificationKpiResponse>();
|
||||
Assert.True(response.Success);
|
||||
Assert.Null(response.ErrorMessage);
|
||||
Assert.Equal("corr-ps", response.CorrelationId);
|
||||
Assert.Single(response.Sites);
|
||||
Assert.Equal("plant-a", response.Sites[0].SourceSiteId);
|
||||
|
||||
_repository.Received(1).ComputePerSiteKpisAsync(
|
||||
Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PerSiteKpiRequest_RepositoryFault_RepliesUnsuccessful()
|
||||
{
|
||||
_repository.ComputePerSiteKpisAsync(
|
||||
Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<CancellationToken>())
|
||||
.ThrowsAsync(new InvalidOperationException("db down"));
|
||||
var actor = CreateActor();
|
||||
|
||||
actor.Tell(new PerSiteNotificationKpiRequest("corr-ps"), TestActor);
|
||||
|
||||
var response = ExpectMsg<PerSiteNotificationKpiResponse>();
|
||||
Assert.False(response.Success);
|
||||
Assert.Equal("corr-ps", response.CorrelationId);
|
||||
Assert.NotNull(response.ErrorMessage);
|
||||
Assert.Contains("db down", response.ErrorMessage);
|
||||
Assert.Empty(response.Sites);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user