| New file |
| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import static org.mockito.ArgumentMatchers.any; |
| | | import static org.mockito.ArgumentMatchers.anyString; |
| | | import static org.mockito.ArgumentMatchers.anyInt; |
| | | import static org.mockito.ArgumentMatchers.eq; |
| | | import static org.mockito.ArgumentMatchers.isNull; |
| | | import static org.mockito.Mockito.mock; |
| | | import static org.mockito.Mockito.times; |
| | | import static org.mockito.Mockito.verify; |
| | | import static org.mockito.Mockito.when; |
| | | |
| | | import java.time.Instant; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import org.junit.jupiter.api.Test; |
| | | import com.ruoyi.device.bts.BtsDevelopmentSimulator; |
| | | import com.ruoyi.device.simulator.BtsSimulatorStateStore.BtsHistoryRecord; |
| | | import com.ruoyi.system.domain.TTest; |
| | | import com.ruoyi.system.domain.TTestBattery; |
| | | import com.ruoyi.system.domain.TTestChannelBinding; |
| | | import com.ruoyi.system.mapper.TTestMapper; |
| | | import com.ruoyi.system.service.ITTestService; |
| | | |
| | | /** 接收服务只应把本次测试开始后的模拟器事实归入测试。 */ |
| | | class TestDataReceptionServiceImplTest |
| | | { |
| | | @Test |
| | | void ignoresRecordsBeforeReceptionStart() |
| | | { |
| | | TTestMapper mapper = mock(TTestMapper.class); |
| | | ITTestService tests = mock(ITTestService.class); |
| | | BtsDevelopmentSimulator simulator = mock(BtsDevelopmentSimulator.class); |
| | | TTest test = test(Date.from(Instant.parse("2026-09-02T04:00:00Z"))); |
| | | when(mapper.selectReceivingTestIds()).thenReturn(List.of(1L)); |
| | | when(mapper.selectTestByIdForUpdate(1L)).thenReturn(test); |
| | | when(tests.selectTestById(1L)).thenReturn(test); |
| | | when(simulator.btsRecords(1, 1)).thenReturn(List.of( |
| | | record(1L, "2026-09-02T03:59:59Z"), record(2L, "2026-09-02T04:00:01Z"))); |
| | | when(mapper.selectBtsSampleContentHash(any(), anyString(), any())).thenReturn(null); |
| | | when(mapper.insertBtsSample(any(), any(), any(), anyString(), any(), any(Date.class), anyString(), |
| | | any(Date.class), anyInt(), anyInt(), anyString(), anyString(), isNull(), any(BigDecimal.class), |
| | | any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), any(byte[].class))).thenReturn(1); |
| | | |
| | | new TestDataReceptionServiceImpl(mapper, tests, simulator).captureDevelopmentCabinetRecords(); |
| | | |
| | | verify(mapper, times(1)).insertBtsSample(eq(1L), eq(2L), eq(3L), anyString(), eq(2L), any(Date.class), |
| | | anyString(), any(Date.class), anyInt(), anyInt(), anyString(), anyString(), isNull(), |
| | | any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), any(BigDecimal.class), |
| | | any(byte[].class)); |
| | | } |
| | | |
| | | private static TTest test(Date startedAt) |
| | | { |
| | | TTestChannelBinding binding = new TTestChannelBinding(); |
| | | binding.setBindingId(2L); |
| | | binding.setChannelId(3L); |
| | | binding.setDevid(1); |
| | | binding.setChlid(1); |
| | | TTestBattery battery = new TTestBattery(); |
| | | battery.setBinding(binding); |
| | | TTest test = new TTest(); |
| | | test.setTestId(1L); |
| | | test.setReceptionStatus("RECEIVING"); |
| | | test.setStartedAtUtc(startedAt); |
| | | test.setBatteries(List.of(battery)); |
| | | return test; |
| | | } |
| | | |
| | | private static BtsHistoryRecord record(long sequenceId, String deviceTime) |
| | | { |
| | | return new BtsHistoryRecord(sequenceId, Instant.parse(deviceTime), 1d, 2d, 3d, 4d, |
| | | 1, 1, "恒流充电", "cc"); |
| | | } |
| | | } |