| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using YZWater.Core.Models;
- namespace YZWater.Core.Tests.Models;
- /// <summary>
- /// 持续时间列的语义。
- /// 报警历史里"测点读取失败""报警升级"这类记录是瞬时事件,没有恢复概念;
- /// 之前它们和真报警一样按 now-AlarmTime 累加,界面上显示成"31m+",
- /// 操作员看到一整屏在无限增长的"报警",于是问"这些是啥报警,确认又确认不了"。
- /// 真报警的"进行中"计数必须保留,否则失联期间的报警看起来像已经结束。
- /// </summary>
- public class AlarmDurationSemanticsTests
- {
- [Fact]
- public void DiaryRecord_WithoutConditionId_ShowsNoDuration()
- {
- var journal = new AlarmRecord
- {
- AlarmType = "Quality",
- AlarmMessage = "15 个测点读取失败",
- AlarmTime = DateTime.Now.AddMinutes(-30)
- };
- journal.UpdateDurationText();
- Assert.Equal("--", journal.DurationText);
- }
- [Fact]
- public void EscalationRecord_AlsoPointEvent_ShowsNoDuration()
- {
- var escalated = new AlarmRecord
- {
- AlarmType = "DI",
- AlarmMessage = "报警已升级",
- AlarmLevel = 4,
- AlarmTime = DateTime.Now.AddMinutes(-30)
- };
- escalated.UpdateDurationText();
- Assert.Equal("--", escalated.DurationText);
- }
- [Fact]
- public void ActiveAlarm_WithoutRecoverTime_StillCountsUp()
- {
- var alarm = new AlarmRecord
- {
- ConditionId = "DI_低液位报警",
- AlarmMessage = "低液位报警",
- AlarmTime = DateTime.Now.AddMinutes(-30)
- };
- alarm.UpdateDurationText();
- Assert.Contains("+", alarm.DurationText);
- }
- [Fact]
- public void RecoveredAlarm_ShowsElapsedSpan()
- {
- var start = DateTime.Now.AddMinutes(-5);
- var alarm = new AlarmRecord
- {
- ConditionId = "DI_低液位报警",
- AlarmTime = start,
- RecoverTime = start.AddSeconds(40)
- };
- alarm.UpdateDurationText();
- Assert.Equal("40s", alarm.DurationText);
- }
- }
|