fix: break Spring Framework 7 circular bean dependency cycles #426

Merged
marcel merged 6 commits from fix/spring7-circular-dependency-cycles into main 2026-05-05 16:39:38 +02:00
Showing only changes of commit 548df84219 - Show all commits

View File

@@ -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();