fix(lastleg): repair dispatch cancellation and return execution contracts
This commit is contained in:
+15
@@ -33,6 +33,21 @@ import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
@Isolated("Manual retry regression temporarily changes the JVM default time zone")
|
||||
class OverseasFeeCancellationPersistenceTest {
|
||||
/** 相同派送费版本重复发布只保留一个真实Outbox事件,重试不制造新应收源。 */
|
||||
@Test void deliveryFeePublicationReplayKeepsOneImmutableEvent() {
|
||||
var producer=new OverseasFeeOutboxService();
|
||||
ReflectionTestUtils.setField(producer,"mapper",events);
|
||||
ReflectionTestUtils.setField(producer,"objectMapper",new ObjectMapper().findAndRegisterModules());
|
||||
var deliveryFee=new OverseasFeeSource();org.springframework.beans.BeanUtils.copyProperties(source,deliveryFee);
|
||||
deliveryFee.setSourceFeeId(702L);deliveryFee.setSourceType("OVERSEAS_DELIVERY_FEE");deliveryFee.setSourceNo("DL-REPLAY");
|
||||
producer.publish(deliveryFee,"PUBLISHED");
|
||||
String key=OverseasFeeCancellation.eventKey(deliveryFee,"PUBLISHED");
|
||||
var first=events.findByEventKey(key);
|
||||
producer.publish(deliveryFee,"PUBLISHED");producer.publish(deliveryFee,"PUBLISHED");
|
||||
var replay=events.findByEventKey(key);
|
||||
assertThat(replay.getId()).isEqualTo(first.getId());assertThat(replay.getPayloadJson()).isEqualTo(first.getPayloadJson());
|
||||
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM ll_event_outbox WHERE event_key=?",Integer.class,key)).isEqualTo(1);
|
||||
}
|
||||
JdbcTemplate jdbc;
|
||||
LastlegEventOutboxMapper events;
|
||||
OverseasFeeSourceMapper fees;
|
||||
|
||||
Reference in New Issue
Block a user