package com.baiyue.eventbridge.service; import com.baiyue.eventbridge.mapper.BridgeInboxMapper; import org.junit.jupiter.api.Test; import org.springframework.test.util.ReflectionTestUtils; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.*; class EventReplayServiceTest { private final BridgeInboxMapper mapper = mock(BridgeInboxMapper.class); private final EventReplayService service = service(); @Test void requeuesDeadEventWithAuditReason() { when(mapper.replayDead(eq("event-1"), contains("incident-42"))).thenReturn(1); service.replayDead("event-1", "operator-7", "incident-42 approved"); verify(mapper).replayDead(eq("event-1"), contains("operator-7")); } @Test void rejectsEventThatIsNotDead() { when(mapper.replayDead(anyString(), anyString())).thenReturn(0); assertThatThrownBy(() -> service.replayDead("event-1", "operator-7", "retry")) .isInstanceOf(IllegalStateException.class); } private EventReplayService service() { EventReplayService service = new EventReplayService(); ReflectionTestUtils.setField(service, "inboxMapper", mapper); return service; } }