From 7259e265b9237286996b09da03038ea5a133e1e0 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 17:45:07 +0800
Subject: [PATCH] 收敛模拟器为设备事实与实时观测

---
 ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java |   47 +++++++++++++++++++++++++++++++----------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java b/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
index a9fa7f8..91d10a9 100644
--- a/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
+++ b/ruoyi-admin/src/test/java/com/battery/business/web/device/BtsDevelopmentSimulatorControllerTest.java
@@ -30,6 +30,30 @@
 class BtsDevelopmentSimulatorControllerTest
 {
     @Test
+    void restChangesSoftwareAndCollectorChannelFactsAndRetiresPlayback() throws Exception
+    {
+        try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
+        {
+            var mvc = org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup(controller(simulator)).build();
+            mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put("/dev/bts-simulator/software")
+                    .contentType("application/json").content("{\"accessible\":false}"))
+                    .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isOk());
+            assertFalse(simulator.snapshot().softwareAccessible());
+            mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put(
+                    "/dev/bts-simulator/collectors/1/channels/S-01/status")
+                    .contentType("application/json").content("{\"workStatus\":\"PROTECTED\"}"))
+                    .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isOk());
+            assertEquals(DeviceWorkStatus.PROTECTED, simulator.snapshot().collectors().get(0).channels().get(0).workStatus());
+            for (String path : List.of("/devices/1/channels/1/playback/play", "/devices/1/channels/1/playback/next-step"))
+                mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post("/dev/bts-simulator" + path))
+                        .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isNotFound());
+            for (String path : List.of("/collectors/1/history", "/devices/1/channels/1/records"))
+                mvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get("/dev/bts-simulator" + path))
+                        .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isNotFound());
+        }
+    }
+
+    @Test
     void controllerUpdatesDeviceAndChannelState() throws Exception
     {
         try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
@@ -119,55 +143,46 @@
     }
 
     @Test
-    void controllerExposesCollectorRealtimeAndPagedHistory() throws Exception
+    void controllerExposesOnlyCurrentCollectorMeasurements() throws Exception
     {
         try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
         {
             BtsDevelopmentSimulatorController controller = controller(simulator);
-            controller.configureCollectorSampling(1,
-                    new BtsDevelopmentSimulatorController.CollectorSamplingCommand(
-                            100, List.of(), null, null, false));
             controller.configureCollectorChannel(1, "S-01",
                     new BtsDevelopmentSimulatorController.CollectorChannelCommand(List.of(
                             new BtsDevelopmentSimulatorController.CollectorMetricCommand(
                                     "temperature", new BigDecimal("27.2"), "℃"),
                             new BtsDevelopmentSimulatorController.CollectorMetricCommand(
                                     "custom_voltage", new BigDecimal("1.234"), "V"))));
-            simulator.advanceCollectors(Instant.parse("2026-08-29T01:00:00Z"));
 
             var realtime = controller.collectorRealtime(1);
-            var firstPage = controller.collectorHistory(1, 0, 2);
 
             assertTrue(realtime.online());
             assertTrue(realtime.measurements().stream().anyMatch(item -> item.metricCode().equals("custom_voltage")));
-            assertEquals(2, firstPage.records().size());
-            assertTrue(firstPage.hasMore());
-            assertEquals(2, firstPage.nextOffset());
+
         }
     }
 
     @Test
-    void controllerPowersAllSimulatorDevicesWithoutResettingHistory() throws Exception
+    void controllerChangesOnlineFactsWithoutResettingChannelStatus() throws Exception
     {
         try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0))
         {
             BtsDevelopmentSimulatorController controller = controller(simulator);
-            simulator.advanceCollectors(Instant.now());
-            long historyCount = controller.state().collectors().get(0).historyRecordCount();
+            simulator.updateChannel(1, 1, true, DeviceWorkStatus.PAUSED);
 
             var poweredOff = controller.setPower(
                     new BtsDevelopmentSimulatorController.SimulatorPowerCommand(false));
 
-            assertTrue(poweredOff.devices().stream().noneMatch(device -> device.online()
-                    || device.channels().stream().anyMatch(channel -> channel.online())));
+            assertTrue(poweredOff.devices().stream().noneMatch(device -> device.online()));
             assertTrue(poweredOff.collectors().stream().noneMatch(collector -> collector.online()));
-            assertEquals(historyCount, poweredOff.collectors().get(0).historyRecordCount());
+            assertEquals(DeviceWorkStatus.PAUSED, poweredOff.devices().get(0).channels().get(0).workStatus());
 
             var poweredOn = controller.setPower(
                     new BtsDevelopmentSimulatorController.SimulatorPowerCommand(true));
             assertTrue(poweredOn.devices().stream().allMatch(device -> device.online()
                     && device.channels().stream().allMatch(channel -> channel.online()
-                            && channel.workStatus() == DeviceWorkStatus.STOPPED)));
+)));
             assertTrue(poweredOn.collectors().stream().allMatch(collector -> collector.online()));
         }
     }

--
Gitblit v1.7.1