diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/AnnotationServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/AnnotationServiceTest.java index 0534a7a3..bd3064a9 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/AnnotationServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/AnnotationServiceTest.java @@ -11,6 +11,7 @@ import org.raddatz.familienarchiv.exception.DomainException; import org.raddatz.familienarchiv.model.DocumentAnnotation; import org.raddatz.familienarchiv.repository.AnnotationRepository; import org.raddatz.familienarchiv.repository.TranscriptionBlockRepository; +import org.springframework.dao.DataIntegrityViolationException; import java.util.List; import java.util.Optional; @@ -22,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.springframework.http.HttpStatus.BAD_REQUEST; import static org.springframework.http.HttpStatus.FORBIDDEN; import static org.springframework.http.HttpStatus.NOT_FOUND; @@ -241,6 +243,25 @@ class AnnotationServiceTest { verify(annotationRepository).save(annotation); } + @Test + void updateAnnotation_throwsAnnotationUpdateFailed_whenDbConstraintViolated() { + UUID docId = UUID.randomUUID(); + UUID annotId = UUID.randomUUID(); + DocumentAnnotation annotation = DocumentAnnotation.builder() + .id(annotId).documentId(docId) + .x(0.1).y(0.2).width(0.3).height(0.4).build(); + when(annotationRepository.findByIdAndDocumentId(annotId, docId)) + .thenReturn(Optional.of(annotation)); + when(annotationRepository.save(any())).thenThrow(new DataIntegrityViolationException("constraint")); + + UpdateAnnotationDTO dto = new UpdateAnnotationDTO(); + dto.setX(1.5); + + assertThatThrownBy(() -> annotationService.updateAnnotation(docId, annotId, dto)) + .isInstanceOf(DomainException.class) + .satisfies(e -> assertThat(((DomainException) e).getStatus()).isEqualTo(BAD_REQUEST)); + } + // ─── listAnnotations ────────────────────────────────────────────────────── @Test