diff --git a/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java b/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java index 0a077a2d..361d7d22 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/tag/TagService.java @@ -46,6 +46,10 @@ public class TagService { return enrichWithRelatives(matched); } + public List findByNameContaining(String fragment) { + return tagRepository.findByNameContainingIgnoreCase(fragment); + } + public Tag getById(UUID id) { return tagRepository.findById(id) .orElseThrow(() -> DomainException.notFound(ErrorCode.TAG_NOT_FOUND, "Tag not found: " + id)); diff --git a/backend/src/test/java/org/raddatz/familienarchiv/tag/TagServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/tag/TagServiceTest.java index d0373f7b..3c097073 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/tag/TagServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/tag/TagServiceTest.java @@ -666,4 +666,17 @@ class TagServiceTest { // verify findAllById was called at least twice: once for extras, once inside resolveEffectiveColors verify(tagRepository, atLeastOnce()).findAllById(any()); } + + // ─── findByNameContaining ───────────────────────────────────────────────── + + @Test + void findByNameContaining_delegatesToRepository() { + Tag krieg = Tag.builder().id(UUID.randomUUID()).name("Krieg").build(); + when(tagRepository.findByNameContainingIgnoreCase("krieg")).thenReturn(List.of(krieg)); + + List result = tagService.findByNameContaining("krieg"); + + assertThat(result).containsExactly(krieg); + verify(tagRepository).findByNameContainingIgnoreCase("krieg"); + } }