package com.ruoyi.config; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.springframework.beans.factory.annotation.Autowired; import org.junit.jupiter.api.Test; import com.ruoyi.device.bts.BtsDevelopmentSimulator; import com.ruoyi.device.discovery.InMemoryDeviceDiscoveryCandidateStore; import com.ruoyi.system.mapper.TCollectorMapper; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; class DevelopmentCollectorStatusSynchronizerTest { @Test void productionConstructorIsExplicitlyAutowired() { var constructors = DevelopmentCollectorStatusSynchronizer.class.getDeclaredConstructors(); assertEquals(1, constructors.length); var production = java.util.Arrays.stream(constructors) .filter(item -> item.isAnnotationPresent(Autowired.class)).findFirst().orElseThrow(); assertEquals(3, production.getParameterCount()); } @Test void synchronizesOnlyConfiguredCollectorsWithoutRegisteringThem() throws Exception { try (BtsDevelopmentSimulator simulator = new BtsDevelopmentSimulator(0)) { InMemoryDeviceDiscoveryCandidateStore store = new InMemoryDeviceDiscoveryCandidateStore(); TCollectorMapper collectorMapper = mock(TCollectorMapper.class); DevelopmentCollectorStatusSynchronizer synchronizer = new DevelopmentCollectorStatusSynchronizer(simulator, store, collectorMapper); simulator.updateCollector(1, "127.0.1.2", 4, false); synchronizer.synchronizeOnlineStatus(); assertEquals(false, store.snapshot(java.time.Instant.now()).collectors().get(0).online()); verify(collectorMapper).updateRegisteredObservation("dev-sim-collector-1", "OFFLINE"); simulator.deleteCollector(1); synchronizer.synchronizeOnlineStatus(); assertEquals(0, store.snapshot(java.time.Instant.now()).collectors().size()); } } }