| | |
| | | verify(mapper, never()).insertDataRevisionAction(any()); |
| | | } |
| | | |
| | | @Test void medianEditAuditsPreviousValuesAndPreservesLegacyFacts() |
| | | { |
| | | var action = action("EDIT", "step:7"); action.setDataType("STEP"); |
| | | String previous = "{\"chargeMedianVoltage\":0,\"dischargeMedianVoltage\":1.1709,\"chargePeakVoltage\":1.8,\"dischargeValleyVoltage\":0.8}"; |
| | | when(mapper.selectDataRecord(1L, "STEP", 7L)).thenReturn(Map.of("extension_measurements_json", previous)); |
| | | var item = new DataRevisionItem(); item.setStableIdentity("step:7"); |
| | | item.setFieldValues("{\"chargeMedianVoltage\":1.6431,\"dischargeMedianVoltage\":null}"); |
| | | service.submitAction(action, List.of(item)); |
| | | assertEquals(previous, JSON.parseArray(action.getBeforeContentJson()).getJSONObject(0).getString("extension_measurements_json")); |
| | | var before = JSON.parseArray(action.getChangesSummary()).getJSONObject(0).getJSONObject("before"); |
| | | assertEquals(new BigDecimal("1.1709"), before.getBigDecimal("dischargeMedianVoltage")); |
| | | var values = org.mockito.ArgumentCaptor.forClass(Map.class); |
| | | verify(mapper).updateDataRecord(eq(1L), eq("STEP"), eq(7L), values.capture()); |
| | | var extension = JSON.parseObject(values.getValue().get("extension_measurements_json").toString()); |
| | | assertEquals(new BigDecimal("1.6431"), extension.getBigDecimal("chargeMedianVoltage")); |
| | | assertNull(extension.get("dischargeMedianVoltage")); |
| | | assertEquals(new BigDecimal("1.8"), extension.getBigDecimal("chargePeakVoltage")); |
| | | assertEquals(new BigDecimal("0.8"), extension.getBigDecimal("dischargeValleyVoltage")); |
| | | } |
| | | |
| | | @Test void rejectsIdentityEditsAndNonNumericMeasurements() |
| | | { |
| | | when(mapper.selectDataRecord(1L, "REALTIME", 7L)).thenReturn(Map.of("voltage_v", 3.7)); |