diff --git a/notification-manager/src/main/java/de/itvsh/kop/notification/user/UserNotificationService.java b/notification-manager/src/main/java/de/itvsh/kop/notification/user/UserNotificationService.java index 88d2070ce6870eeb18ac9dc8055dab8ffb417dcd..95cb74ff2e618b168d5b6aa76a454ba1c56cb6d3 100644 --- a/notification-manager/src/main/java/de/itvsh/kop/notification/user/UserNotificationService.java +++ b/notification-manager/src/main/java/de/itvsh/kop/notification/user/UserNotificationService.java @@ -1,10 +1,10 @@ package de.itvsh.kop.notification.user; import java.util.List; - -import javax.validation.constraints.NotNull; +import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -24,8 +24,12 @@ public class UserNotificationService { @Autowired private UserRemoteService userRemoteService; - public void sendNotification(@NotNull String organisationEinheitId) { - var recipients = userRemoteService.getRecipients(organisationEinheitId); + @Async + public void sendNotification(String organisationsEinheitId) { + if (Objects.isNull(organisationsEinheitId)) { + throw new IllegalArgumentException("organisationsEinheitId cannot be null."); + } + var recipients = userRemoteService.getRecipients(organisationsEinheitId); emailRemoteService.sendEmail(buildUserEmail(recipients)); } diff --git a/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserNotificationServiceTest.java b/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserNotificationServiceTest.java index 463469928c2c03bd1a5863679a861dbde33eda8f..37dd2dc0832eba1f26567a1db03a50cb3fe0eb5b 100644 --- a/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserNotificationServiceTest.java +++ b/notification-manager/src/test/java/de/itvsh/kop/notification/user/UserNotificationServiceTest.java @@ -1,5 +1,6 @@ package de.itvsh.kop.notification.user; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -31,9 +32,9 @@ class UserNotificationServiceTest { @Nested class TestSendNotification { - @DisplayName("with valid orgaIds") + @DisplayName("with valid orgaId") @Nested - class TestWithValidOrgaIds { + class TestWithValidOrgaId { @BeforeEach void init() { @@ -55,5 +56,31 @@ class UserNotificationServiceTest { verify(emailRemoteService).sendEmail(UserEmailTestFactory.create()); } } + + @DisplayName("with valid orgaId") + @Nested + class TestWithInValidOrgaId { + + @Test + void shouldSendEmail() { + assertThatThrownBy(() -> service.sendNotification(null)) + .isInstanceOf(IllegalArgumentException.class) + .withFailMessage("organisationsEinheitId cannot be null."); + } + + @Test + void shouldNotCallUserRemoteService() { + assertThatThrownBy(() -> service.sendNotification(null)); + + verify(userRemoteService, never()).getRecipients(anyString()); + } + + @Test + void shouldNotCallEmailRemoteSErvie() { + assertThatThrownBy(() -> service.sendNotification(null)); + + verify(emailRemoteService, never()).sendEmail(any(UserEmail.class)); + } + } } } \ No newline at end of file