From bc62f3b0afc52ac390a73a062d93ff56180ab4c9 Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 27 Mar 2026 20:05:29 +0100 Subject: [PATCH] feat(backend): trigger reply notifications from CommentService Co-Authored-By: Claude Sonnet 4.6 --- .../service/CommentService.java | 5 ++++- .../service/CommentServiceTest.java | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/CommentService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/CommentService.java index 84bf9f0b..fb856a53 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/CommentService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/CommentService.java @@ -17,6 +17,7 @@ import java.util.UUID; public class CommentService { private final CommentRepository commentRepository; + private final NotificationService notificationService; public List getCommentsForDocument(UUID documentId) { List roots = @@ -60,7 +61,9 @@ public class CommentService { .authorId(author.getId()) .authorName(resolveAuthorName(author)) .build(); - return commentRepository.save(reply); + DocumentComment saved = commentRepository.save(reply); + notificationService.notifyReply(saved, root); + return saved; } @Transactional diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/CommentServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/CommentServiceTest.java index 13d1906c..cbda7946 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/CommentServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/CommentServiceTest.java @@ -20,6 +20,7 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,6 +31,7 @@ import static org.springframework.http.HttpStatus.NOT_FOUND; class CommentServiceTest { @Mock CommentRepository commentRepository; + @Mock NotificationService notificationService; @InjectMocks CommentService commentService; // ─── postComment ────────────────────────────────────────────────────────── @@ -119,6 +121,25 @@ class CommentServiceTest { assertThat(result.getParentId()).isEqualTo(rootId); } + @Test + void replyToComment_triggersNotification_afterSave() { + UUID docId = UUID.randomUUID(); + UUID rootId = UUID.randomUUID(); + AppUser author = AppUser.builder().id(UUID.randomUUID()).username("anna").build(); + + DocumentComment root = DocumentComment.builder() + .id(rootId).documentId(docId).parentId(null).content("Root").authorName("Hans").build(); + DocumentComment saved = DocumentComment.builder() + .id(UUID.randomUUID()).documentId(docId).parentId(rootId).content("Reply").authorName("anna").build(); + + when(commentRepository.findById(rootId)).thenReturn(Optional.of(root)); + when(commentRepository.save(any())).thenReturn(saved); + + commentService.replyToComment(docId, rootId, "Reply", author); + + verify(notificationService).notifyReply(eq(saved), eq(root)); + } + // ─── editComment ────────────────────────────────────────────────────────── @Test