yeg
2026-09-09 c1742f5798ee8b0bad260b19760c3c43df4dd9d0
ruoyi-admin/src/test/java/com/battery/business/service/impl/TestConsoleDataRevisionQueryServiceTest.java
@@ -65,6 +65,26 @@
        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));