From 8df7d133683210881d162977b0486fdd5364c35a Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 31 May 2026 11:59:42 +0200 Subject: [PATCH] feat(transcription): expose hasBlocks on TranscriptionBlockQueryService (#697) Domain-service wrapper over existsByDocumentId so other domains can ask "does this document have any transcription blocks?" without reaching into the repository. Co-Authored-By: Claude Opus 4.8 --- .../TranscriptionBlockQueryService.java | 4 +++ .../TranscriptionBlockQueryServiceTest.java | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 backend/src/test/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryServiceTest.java diff --git a/backend/src/main/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryService.java b/backend/src/main/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryService.java index 3daa2544..be183356 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryService.java @@ -17,6 +17,10 @@ public class TranscriptionBlockQueryService { private final TranscriptionBlockRepository blockRepository; + public boolean hasBlocks(UUID documentId) { + return blockRepository.existsByDocumentId(documentId); + } + public Map getCompletionStats(List documentIds) { if (documentIds.isEmpty()) return Map.of(); Map result = new HashMap<>(); diff --git a/backend/src/test/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryServiceTest.java new file mode 100644 index 00000000..28fc663a --- /dev/null +++ b/backend/src/test/java/org/raddatz/familienarchiv/document/transcription/TranscriptionBlockQueryServiceTest.java @@ -0,0 +1,35 @@ +package org.raddatz.familienarchiv.document.transcription; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class TranscriptionBlockQueryServiceTest { + + @Mock TranscriptionBlockRepository blockRepository; + @InjectMocks TranscriptionBlockQueryService queryService; + + @Test + void hasBlocks_returns_true_when_a_block_exists() { + UUID documentId = UUID.randomUUID(); + when(blockRepository.existsByDocumentId(documentId)).thenReturn(true); + + assertThat(queryService.hasBlocks(documentId)).isTrue(); + } + + @Test + void hasBlocks_returns_false_when_no_block_exists() { + UUID documentId = UUID.randomUUID(); + when(blockRepository.existsByDocumentId(documentId)).thenReturn(false); + + assertThat(queryService.hasBlocks(documentId)).isFalse(); + } +}