feat(annotations): resize and move annotations in document view #235

Merged
marcel merged 25 commits from feat/issue-233-annotation-resize-move into main 2026-04-14 14:55:28 +02:00
Showing only changes of commit f00b470928 - Show all commits

View File

@@ -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