diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerITCase.java index d196e31bcf0830fdbb0f670a5c7c6f574bd3ab96..52046ba411a9129129ef0a9f29a63306ddeb7c47 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerITCase.java @@ -23,29 +23,35 @@ */ package de.ozgcloud.vorgang.vorgang.redirect; +import static org.assertj.core.api.Assertions.*; import static org.awaitility.Awaitility.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource.Mode; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.ApplicationEventPublisher; import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import de.ozgcloud.command.Command; import de.ozgcloud.common.test.ITCase; import de.ozgcloud.nachrichten.email.MailSentEventTestFactory; import de.ozgcloud.vorgang.command.CommandCreatedEventTestFactory; +import de.ozgcloud.vorgang.command.CommandService; import de.ozgcloud.vorgang.command.CommandTestFactory; import de.ozgcloud.vorgang.command.Order; import de.ozgcloud.vorgang.vorgang.VorgangService; +import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; @ITCase class ForwardingEventListenerITCase { @@ -53,15 +59,17 @@ class ForwardingEventListenerITCase { @Autowired private ApplicationEventPublisher publisher; - @MockBean + @MockitoBean private ForwardingService service; - @MockBean + @MockitoBean private JavaMailSender mailSender; - @MockBean + @MockitoBean private VorgangService vorgangService; + @MockitoBean + private CommandService commandService; @Nested - class TestForwardVorgang { + class TestRedirectdVorgang { @Test void shouldCallForwardingService() { @@ -109,4 +117,45 @@ class ForwardingEventListenerITCase { } } + @Nested + class TestForwardVorgang { + + private Command command = CommandTestFactory.createBuilder().order(Order.FORWARD_VORGANG.name()).build(); + @Captor + private ArgumentCaptor<ForwardingRequest> requestCaptor; + + @BeforeEach + void init() { + when(vorgangService.getById(any())).thenReturn(VorgangTestFactory.create()); + } + + @Test + void shouldCallForwardingService() { + publishEvent(); + + await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(service).forward(requestCaptor.capture())); + assertThat(requestCaptor.getValue().getVorgangId()).isEqualTo(command.getVorgangId()); + } + + @Test + void shouldSetCommandFinished() { + publishEvent(); + + await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(commandService).setCommandFinished(command.getId(), null)); + } + + @Test + void shouldSetCommandFailed() { + doThrow(RuntimeException.class).when(service).forward(any()); + + publishEvent(); + + await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(commandService).setCommandError(eq(command.getId()), any())); + } + + private void publishEvent() { + publisher.publishEvent(CommandCreatedEventTestFactory.create(command)); + } + } + }