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");
|
}
|
}
|