|
|
@@ -25,6 +25,7 @@ class CollectionAlarmLifecycleTest {
|
|
|
when(mapper.lockAlarmKey("D1", "PRESSURE")).thenReturn(1);
|
|
|
when(mapper.lockAlarmNumberGeneration()).thenReturn(1);
|
|
|
when(mapper.markAlarmRecovered(anyString())).thenReturn(1);
|
|
|
+ when(mapper.selectWarningName("PRESSURE")).thenReturn("压力越界");
|
|
|
when(mapper.selectRecoverableAlarmIdsForUpdate("D1", "PRESSURE")).thenReturn(Collections.singletonList("a1"));
|
|
|
when(logs.insertLifecycleIfAbsent(anyString(),anyInt(),anyString(),anyString(),any(),anyLong())).thenReturn(1);
|
|
|
when(mapper.insert(any(AlarmData.class))).thenAnswer(call -> {
|
|
|
@@ -34,10 +35,11 @@ class CollectionAlarmLifecycleTest {
|
|
|
@Test void creationWritesDescriptionDirectlyWithoutAnyTrigger() {
|
|
|
AlarmData alarm = alarm(); alarm.setActualValue(BigDecimal.ZERO); alarm.setMaxValue(BigDecimal.TEN);
|
|
|
assertTrue(writer.saveOrUpdateUnhandled(alarm));
|
|
|
+ assertEquals("压力越界\n实际值:0;阈值:上限 10", alarm.getAlarmContent());
|
|
|
var ordered = inOrder(mapper,logs,manager);
|
|
|
ordered.verify(mapper).insert(alarm);
|
|
|
ordered.verify(logs).insertLifecycleIfAbsent(eq("a1"),eq(0),
|
|
|
- eq("系统触发报警;报警单号:"+alarm.getAlarmNo()+";报警描述:压力越界;实际值:0;触发时上限:10"),eq("监测系统"),any(),anyLong());
|
|
|
+ eq("系统触发报警;报警单号:"+alarm.getAlarmNo()+";报警描述:"+alarm.getAlarmContent()+";实际值:0;触发时上限:10"),eq("监测系统"),any(),anyLong());
|
|
|
ordered.verify(manager).commit(any());
|
|
|
}
|
|
|
@Test void absentActualValueDoesNotIncludeThresholdPlaceholders() {
|
|
|
@@ -46,6 +48,36 @@ class CollectionAlarmLifecycleTest {
|
|
|
verify(logs).insertLifecycleIfAbsent(eq("a1"),eq(0),
|
|
|
eq("系统触发报警;报警单号:"+alarm.getAlarmNo()+";报警描述:压力越界"),eq("监测系统"),any(),anyLong());
|
|
|
}
|
|
|
+ @Test void contentMatchesFrontendThresholdDescriptionRule() {
|
|
|
+ AlarmData alarm=alarm(); alarm.setActualValue(BigDecimal.ZERO); alarm.setMinValue(BigDecimal.ZERO);
|
|
|
+ assertTrue(writer.saveOrUpdateUnhandled(alarm));
|
|
|
+ assertEquals("压力越界达到或低于下限\n实际值:0;阈值:下限 0", alarm.getAlarmContent());
|
|
|
+ }
|
|
|
+ @Test void contentIncludesUpperThresholdAndUnit() {
|
|
|
+ when(mapper.selectWarningUnit("PRESSURE")).thenReturn("mg/L");
|
|
|
+ AlarmData alarm = alarm();
|
|
|
+ alarm.setActualValue(new BigDecimal("60.750"));
|
|
|
+ alarm.setMaxValue(new BigDecimal("60.00"));
|
|
|
+ assertTrue(writer.saveOrUpdateUnhandled(alarm));
|
|
|
+ assertEquals("压力越界达到或超过上限\n实际值:60.75 mg/L;阈值:上限 60 mg/L", alarm.getAlarmContent());
|
|
|
+ }
|
|
|
+ @Test void contentIncludesLowerThresholdAndUnit() {
|
|
|
+ when(mapper.selectWarningUnit("PRESSURE")).thenReturn("mg/L");
|
|
|
+ AlarmData alarm = alarm();
|
|
|
+ alarm.setActualValue(new BigDecimal("25.78"));
|
|
|
+ alarm.setMinValue(new BigDecimal("5"));
|
|
|
+ assertTrue(writer.saveOrUpdateUnhandled(alarm));
|
|
|
+ assertEquals("压力越界\n实际值:25.78 mg/L;阈值:下限 5 mg/L", alarm.getAlarmContent());
|
|
|
+ }
|
|
|
+ @Test void contentIncludesRangeAndZeroValue() {
|
|
|
+ when(mapper.selectWarningUnit("PRESSURE")).thenReturn("μS/cm");
|
|
|
+ AlarmData alarm = alarm();
|
|
|
+ alarm.setActualValue(BigDecimal.ZERO);
|
|
|
+ alarm.setMinValue(new BigDecimal("100"));
|
|
|
+ alarm.setMaxValue(new BigDecimal("5000"));
|
|
|
+ assertTrue(writer.saveOrUpdateUnhandled(alarm));
|
|
|
+ assertEquals("压力越界达到或低于下限\n实际值:0 μS/cm;阈值:100 ~ 5000 μS/cm", alarm.getAlarmContent());
|
|
|
+ }
|
|
|
@Test void everyRecoveredRowGetsLogBeforeCommit() {
|
|
|
when(mapper.selectRecoverableAlarmIdsForUpdate("D1", "PRESSURE")).thenReturn(Arrays.asList("a1","a2"));
|
|
|
assertEquals(2, writer.markRecovered("D1", "PRESSURE"));
|
|
|
@@ -98,6 +130,6 @@ class CollectionAlarmLifecycleTest {
|
|
|
}
|
|
|
private AlarmData alarm() {
|
|
|
AlarmData alarm=new AlarmData(); alarm.setDeviceCode("D1"); alarm.setWarningCode("PRESSURE");
|
|
|
- alarm.setRemark("压力越界"); return alarm;
|
|
|
+ return alarm;
|
|
|
}
|
|
|
}
|