diff --git a/backend/src/test/java/org/raddatz/familienarchiv/document/annotation/AnnotationServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/document/annotation/AnnotationServiceTest.java index 2b81d67a..474f7f0b 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/document/annotation/AnnotationServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/document/annotation/AnnotationServiceTest.java @@ -8,7 +8,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.ArgumentCaptor; import org.raddatz.familienarchiv.audit.AuditKind; import org.raddatz.familienarchiv.audit.AuditService; -import org.raddatz.familienarchiv.document.transcription.TranscriptionService; +import org.raddatz.familienarchiv.document.transcription.TranscriptionBlockRepository; import org.raddatz.familienarchiv.document.annotation.CreateAnnotationDTO; import org.raddatz.familienarchiv.document.annotation.UpdateAnnotationDTO; import org.raddatz.familienarchiv.exception.DomainException; @@ -36,7 +36,7 @@ import static org.springframework.http.HttpStatus.NOT_FOUND; class AnnotationServiceTest { @Mock AnnotationRepository annotationRepository; - @Mock TranscriptionService transcriptionService; + @Mock TranscriptionBlockRepository transcriptionBlockRepository; @Mock AuditService auditService; @InjectMocks AnnotationService annotationService; @@ -208,7 +208,7 @@ class AnnotationServiceTest { annotationService.deleteAnnotation(docId, annotId, ownerId); - verify(transcriptionService).deleteByAnnotationId(annotId); + verify(transcriptionBlockRepository).deleteByAnnotationId(annotId); verify(annotationRepository).delete(annotation); } @@ -225,11 +225,27 @@ class AnnotationServiceTest { annotationService.deleteAnnotation(docId, annotId, ownerId); - var inOrder = org.mockito.Mockito.inOrder(transcriptionService, annotationRepository); - inOrder.verify(transcriptionService).deleteByAnnotationId(annotId); + var inOrder = org.mockito.Mockito.inOrder(transcriptionBlockRepository, annotationRepository); + inOrder.verify(transcriptionBlockRepository).deleteByAnnotationId(annotId); inOrder.verify(annotationRepository).delete(annotation); } + @Test + void deleteAnnotation_cascadesToTranscriptionBlocks() { + UUID docId = UUID.randomUUID(); + UUID annotId = UUID.randomUUID(); + UUID ownerId = UUID.randomUUID(); + + DocumentAnnotation annotation = DocumentAnnotation.builder() + .id(annotId).documentId(docId).createdBy(ownerId).build(); + when(annotationRepository.findByIdAndDocumentId(annotId, docId)) + .thenReturn(Optional.of(annotation)); + + annotationService.deleteAnnotation(docId, annotId, ownerId); + + verify(transcriptionBlockRepository).deleteByAnnotationId(annotId); + } + @Test void deleteAnnotation_throwsForbidden_whenUserIdIsNull() { UUID docId = UUID.randomUUID();