diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java index 8cc10025fc1e715cb48cdf049a45d58aa15028eb..2116b9a5e7a6a0bf7911a31f69c5e9dd43637ea1 100644 --- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java +++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/BescheidEventListener.java @@ -44,6 +44,7 @@ import de.ozgcloud.bescheid.vorgang.VorgangId; import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEvent; import de.ozgcloud.command.CommandFailedEvent; +import de.ozgcloud.document.BescheidDocumentCreatedEvent; import de.ozgcloud.document.DocumentService; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -153,6 +154,9 @@ class BescheidEventListener { } void doCreateBescheidDocument(Command command) { + var bescheid = doCreateBescheidBiz(command); + var bescheidDocument = documentService.createBescheidDocument(command, bescheid); + eventPublisher.publishEvent(new BescheidDocumentCreatedEvent(command, bescheidDocument)); } Bescheid doCreateBescheidBiz(@NonNull Command command) { diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java index 76073deb276bc6c478340a0ebe55f3eda857ca4c..b72a618a2a721d34481538f788a18d12558eb962 100644 --- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java +++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/BescheidEventListenerTest.java @@ -34,6 +34,7 @@ import de.ozgcloud.command.Command; import de.ozgcloud.command.CommandCreatedEventTestFactory; import de.ozgcloud.command.CommandFailedEvent; import de.ozgcloud.command.CommandTestFactory; +import de.ozgcloud.document.BescheidDocumentCreatedEvent; import de.ozgcloud.document.DocumentService; class BescheidEventListenerTest { @@ -380,8 +381,51 @@ class BescheidEventListenerTest { @Nested class TestDoCreateBescheidDocument { - private Command command = CommandTestFactory.create(); + private static final Command COMMAND = CommandTestFactory.create(); + private static final Bescheid BESCHEID = BescheidTestFactory.create(); + + @Captor + private ArgumentCaptor<BescheidDocumentCreatedEvent> eventCaptor; + + @BeforeEach + void init() { + doReturn(BESCHEID).when(listener).doCreateBescheidBiz(any()); + } + + @Test + void shouldCallCreateBescheidBiz() { + listener.doCreateBescheidDocument(COMMAND); + verify(listener).doCreateBescheidBiz(COMMAND); + } + + @Test + void shouldCallCreateBescheidDocument() { + listener.doCreateBescheidDocument(COMMAND); + + verify(documentService).createBescheidDocument(COMMAND, BESCHEID); + } + + @Test + @DisplayName("should publish BescheidDocumentCreatedEvent with command") + void shouldPublishEventWithCommand() { + listener.doCreateBescheidDocument(COMMAND); + + verify(eventPublisher).publishEvent(eventCaptor.capture()); + assertThat(eventCaptor.getValue().getCommand()).isEqualTo(COMMAND); + } + + @Test + @DisplayName("should publish BescheidDocumentCreatedEvent with createdResource") + void shouldPublishEventWithCreatedResource() { + var bescheidDocument = "document-id"; + when(documentService.createBescheidDocument(any(), any(Bescheid.class))).thenReturn(bescheidDocument); + + listener.doCreateBescheidDocument(COMMAND); + + verify(eventPublisher).publishEvent(eventCaptor.capture()); + assertThat(eventCaptor.getValue().getCreatedResource()).isEqualTo(bescheidDocument); + } } @Nested