diff --git a/backend/src/main/java/org/raddatz/familienarchiv/audit/AuditLogQueryService.java b/backend/src/main/java/org/raddatz/familienarchiv/audit/AuditLogQueryService.java index d026c9fc..192795bc 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/audit/AuditLogQueryService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/audit/AuditLogQueryService.java @@ -17,8 +17,12 @@ public class AuditLogQueryService { } public List findActivityFeed(UUID currentUserId, int limit) { - return queryRepository.findRolledUpActivityFeed(currentUserId.toString(), limit, - AuditKind.ROLLUP_ELIGIBLE.stream().map(Enum::name).toList()); + return findActivityFeed(currentUserId, limit, AuditKind.ROLLUP_ELIGIBLE); + } + + public List findActivityFeed(UUID currentUserId, int limit, Set kinds) { + List kindNames = kinds.stream().map(Enum::name).toList(); + return queryRepository.findRolledUpActivityFeed(currentUserId.toString(), limit, kindNames); } public PulseStatsRow getPulseStats(OffsetDateTime weekStart, UUID userId) { diff --git a/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryServiceTest.java new file mode 100644 index 00000000..e6cff02b --- /dev/null +++ b/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryServiceTest.java @@ -0,0 +1,54 @@ +package org.raddatz.familienarchiv.dashboard; + +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 org.raddatz.familienarchiv.audit.ActivityFeedRow; +import org.raddatz.familienarchiv.audit.AuditKind; +import org.raddatz.familienarchiv.audit.AuditLogQueryRepository; +import org.raddatz.familienarchiv.audit.AuditLogQueryService; + +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class AuditLogQueryServiceTest { + + @Mock AuditLogQueryRepository queryRepository; + @InjectMocks AuditLogQueryService auditLogQueryService; + + @Test + void findActivityFeed_withKinds_passesKindNamesToRepository() { + UUID userId = UUID.randomUUID(); + Set kinds = Set.of(AuditKind.FILE_UPLOADED); + when(queryRepository.findRolledUpActivityFeed(eq(userId.toString()), eq(10), anyCollection())) + .thenReturn(List.of()); + + List result = auditLogQueryService.findActivityFeed(userId, 10, kinds); + + assertThat(result).isEmpty(); + verify(queryRepository).findRolledUpActivityFeed(eq(userId.toString()), eq(10), + eq(List.of("FILE_UPLOADED"))); + } + + @Test + void findActivityFeed_twoArg_defaultsToAllRollupEligibleKinds() { + UUID userId = UUID.randomUUID(); + when(queryRepository.findRolledUpActivityFeed(eq(userId.toString()), eq(10), anyCollection())) + .thenReturn(List.of()); + + auditLogQueryService.findActivityFeed(userId, 10); + + verify(queryRepository).findRolledUpActivityFeed(eq(userId.toString()), eq(10), + eq(AuditKind.ROLLUP_ELIGIBLE.stream().map(Enum::name).toList())); + } +}