This commit is contained in:
2026-09-29 17:55:54 +08:00
parent 41d8387cd5
commit 54ad26c607
111 changed files with 1837 additions and 962 deletions
@@ -0,0 +1,35 @@
package com.baiyue.lastleg.financefee;
import com.baiyue.lastleg.client.DirectEventClient;
import com.baiyue.lastleg.entity.LastlegEventOutbox;
import com.baiyue.lastleg.financefee.repository.OverseasFeeOutboxRepository;
import com.baiyue.lastleg.financefee.service.OverseasFeeOutboxRelay;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.List;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
class OverseasFeeOutboxRetryTest {
@Test void failedPayloadAtLimitGoesDeadAndExhaustedLeaseNeverCallsClient() {
var repository = mock(OverseasFeeOutboxRepository.class);
var client = mock(DirectEventClient.class);
var relay = new OverseasFeeOutboxRelay();
ReflectionTestUtils.setField(relay, "repository", repository);
ReflectionTestUtils.setField(relay, "client", client);
ReflectionTestUtils.setField(relay, "objectMapper", new ObjectMapper());
var row = new LastlegEventOutbox();
row.setId(1L); row.setRetryCount(11); row.setPayloadJson("invalid-json");
when(repository.pending(eq(50), any(), any())).thenReturn(List.of(row));
when(repository.claim(eq(1L), anyString(), any(), any())).thenReturn(true);
when(repository.claimed(eq(1L), anyString())).thenReturn(row);
relay.relay();
row.setRetryCount(12);
relay.relay();
verify(repository, times(2)).dead(eq(1L), anyString(), eq(12), anyString());
verify(repository, never()).retry(anyLong(), anyString(), anyInt(), any(), anyString());
verify(repository, never()).published(anyLong(), anyString(), any());
verifyNoInteractions(client);
}
}