From b8ffd81b7e076d6086cd5244aaca13b3e5520a35 Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 20 Apr 2026 18:15:13 +0200 Subject: [PATCH] test(audit): add regression proving STATUS_CHANGED/METADATA_UPDATED are excluded Cheap insurance for the day someone widens the WHERE clause in findRolledUpActivityFeed. Suggested by Sara in PR #288 review cycle 1. Inserts two non-eligible events alongside one TEXT_SAVED and asserts the feed returns the TEXT_SAVED row only. Part of #285. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../AuditLogQueryRepositoryRolledUpTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryRepositoryRolledUpTest.java b/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryRepositoryRolledUpTest.java index 22b5f89a..1f38a8a0 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryRepositoryRolledUpTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/dashboard/AuditLogQueryRepositoryRolledUpTest.java @@ -135,6 +135,20 @@ class AuditLogQueryRepositoryRolledUpTest { }); } + @Test + void rolledUpFeed_excludes_non_eligible_kinds() { + insertUserAndDocs(); + Instant base = Instant.parse("2026-04-20T12:00:00Z"); + insertAuditEvent(USER_ID, DOC_ID, "STATUS_CHANGED", base); + insertAuditEvent(USER_ID, DOC_ID, "METADATA_UPDATED", base.plusSeconds(60)); + insertAuditEvent(USER_ID, DOC_ID, "TEXT_SAVED", base.plusSeconds(120)); + + List rows = auditLogQueryRepository.findRolledUpActivityFeed(USER_ID.toString(), 40); + + assertThat(rows).hasSize(1); + assertThat(rows.get(0).getKind()).isEqualTo("TEXT_SAVED"); + } + @Test void rolledUpFeed_exposes_count_and_happenedAtUntil_on_singletons_and_rollups() { insertUserAndDocs();