统一人工报价时间精度以保证原键精确重放
This commit is contained in:
@@ -560,6 +560,34 @@ class FbaPricingServiceTest {
|
||||
org.mockito.Mockito.verifyNoInteractions(priceBookEstimator);
|
||||
}
|
||||
|
||||
@Test
|
||||
void manualQuoteFreezesDatabaseMillisecondPrecisionForExactReplay() {
|
||||
readyRepository();
|
||||
InboundPricingEntity inbound = inbound("62.500", "0.3840");
|
||||
inbound.setDestinationType("PRIVATE");
|
||||
InboundMeasurementEntity measurement = new InboundMeasurementEntity();
|
||||
measurement.setId(301L);
|
||||
when(repository.findInbound(TENANT, INBOUND)).thenReturn(inbound);
|
||||
when(measurementRepository.findLatestMeasurement(TENANT, INBOUND)).thenReturn(measurement);
|
||||
when(measurementRepository.listItems(TENANT, 301L)).thenReturn(List.of(new InboundMeasurementItemEntity()));
|
||||
when(repository.completeIdempotency(any(), eq(501L), any())).thenReturn(1);
|
||||
Clock original = (Clock) org.springframework.test.util.ReflectionTestUtils.getField(service, "clock");
|
||||
var preciseClock = Clock.fixed(Instant.parse("2026-08-03T02:00:00.123456789Z"), ZoneId.of("Asia/Shanghai"));
|
||||
org.springframework.test.util.ReflectionTestUtils.setField(service, "clock", preciseClock);
|
||||
try {
|
||||
var result = service.manualQuote(TENANT, OPERATOR, INBOUND,
|
||||
new ManualQuoteRequest(new BigDecimal("62.500"), new BigDecimal("0.3840"),
|
||||
BigDecimal.ONE, "私人地址测试人工报价"), "private-precision");
|
||||
assertThat(result.calculatedAt().getNano()).isEqualTo(123000000);
|
||||
ArgumentCaptor<InboundFeeEntity> fee = ArgumentCaptor.forClass(InboundFeeEntity.class);
|
||||
verify(repository).insertFee(fee.capture());
|
||||
assertThat(fee.getValue().getCreatedAt()).isEqualTo(result.calculatedAt());
|
||||
assertThat(fee.getValue().getUpdatedAt()).isEqualTo(result.calculatedAt());
|
||||
} finally {
|
||||
org.springframework.test.util.ReflectionTestUtils.setField(service, "clock", original);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("已有匹配价格时拒绝绕过价格表创建人工报价")
|
||||
void rejectsManualQuoteWhenRateExists() {
|
||||
|
||||
Reference in New Issue
Block a user