fix(ui): Alarm Summary poll defers row rebuilds to the live path while IsLive (plan R2-07 T8)
This commit is contained in:
@@ -244,6 +244,40 @@ public class AlarmSummaryRenderTests : BunitContext
|
||||
});
|
||||
}
|
||||
|
||||
// ── arch-review R2 N5: while live, the poll updates only _notReporting ──────
|
||||
|
||||
[Fact]
|
||||
public void PollWhileLive_UpdatesNotReportingOnly_DoesNotRegressLiveRows()
|
||||
{
|
||||
// Poll snapshot = Zeta/Alpha (constructor stub) + a not-reporting instance.
|
||||
_summary.GetSiteAlarmsAsync(Arg.Any<int>(), Arg.Any<CancellationToken>())
|
||||
.Returns(ci => Task.FromResult(new AlarmSummaryResult(
|
||||
new List<AlarmSummaryRow>
|
||||
{
|
||||
new("Zeta", new AlarmStateChanged("Zeta", "Z-alarm", AlarmState.Active, 900, DateTimeOffset.UtcNow)),
|
||||
},
|
||||
new[] { "OfflineInstance" })));
|
||||
|
||||
var cut = RenderWithSiteSelected();
|
||||
|
||||
// Go live with a fresher delta: Gamma only (arch-review R2 N5).
|
||||
_liveCache.PushAlarms(new List<AlarmStateChanged>
|
||||
{
|
||||
new("Gamma", "G-alarm", AlarmState.Active, 300, DateTimeOffset.UtcNow),
|
||||
});
|
||||
cut.WaitForAssertion(() => Assert.Equal("Gamma", FirstRowInstance(cut)));
|
||||
|
||||
// A poll now completes: it owns _notReporting but must NOT rebuild the rows.
|
||||
cut.Find("[data-test='alarm-summary-refresh']").Click();
|
||||
|
||||
cut.WaitForAssertion(() =>
|
||||
{
|
||||
Assert.Contains("OfflineInstance", cut.Markup); // notReporting refreshed
|
||||
Assert.Equal("Gamma", FirstRowInstance(cut)); // live rows NOT regressed
|
||||
Assert.Single(cut.FindAll("tr[data-test='alarm-summary-row']"));
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Controllable in-memory fake of <see cref="ISiteAlarmLiveCache"/>: records
|
||||
/// subscribe/dispose counts and lets a test push a live snapshot (which flips
|
||||
|
||||
Reference in New Issue
Block a user