From 689b8e5e82e53c3dd2c1441fadc30fd892de9e5a Mon Sep 17 00:00:00 2001 From: Marcus Fihlon Date: Wed, 29 Apr 2026 10:15:31 +0200 Subject: [PATCH] fix(analytics): refresh summaries after activity deletion Signed-off-by: Marcus Fihlon --- .../net/javahippie/fitpub/service/FitFileService.java | 6 ++++++ .../net/javahippie/fitpub/service/FitFileServiceTest.java | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/net/javahippie/fitpub/service/FitFileService.java b/src/main/java/net/javahippie/fitpub/service/FitFileService.java index a5b8b01..39c8b76 100644 --- a/src/main/java/net/javahippie/fitpub/service/FitFileService.java +++ b/src/main/java/net/javahippie/fitpub/service/FitFileService.java @@ -320,6 +320,12 @@ public class FitFileService { .map(activity -> { activityRepository.delete(activity); achievementService.rebuildAchievementsForUser(userId); + if (activity.getStartedAt() != null) { + java.time.LocalDate activityDate = activity.getStartedAt().toLocalDate(); + activitySummaryService.updateWeeklySummary(userId, activityDate); + activitySummaryService.updateMonthlySummary(userId, activityDate); + activitySummaryService.updateYearlySummary(userId, activityDate); + } log.info("Deleted activity {} for user {}", activityId, userId); return true; }) diff --git a/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java b/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java index 6f97fb8..0ab3ac1 100644 --- a/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/FitFileServiceTest.java @@ -224,9 +224,11 @@ class FitFileServiceTest { void testDeleteActivity() { // Arrange UUID activityId = UUID.randomUUID(); + LocalDateTime startedAt = LocalDateTime.of(2025, 12, 3, 10, 0); Activity activity = Activity.builder() .id(activityId) .userId(testUserId) + .startedAt(startedAt) .build(); when(activityRepository.findByIdAndUserId(activityId, testUserId)) @@ -239,6 +241,9 @@ class FitFileServiceTest { assertTrue(result); verify(activityRepository).delete(activity); verify(achievementService).rebuildAchievementsForUser(testUserId); + verify(activitySummaryService).updateWeeklySummary(testUserId, startedAt.toLocalDate()); + verify(activitySummaryService).updateMonthlySummary(testUserId, startedAt.toLocalDate()); + verify(activitySummaryService).updateYearlySummary(testUserId, startedAt.toLocalDate()); } @Test @@ -256,6 +261,9 @@ class FitFileServiceTest { assertFalse(result); verify(activityRepository, never()).delete(any()); verify(achievementService, never()).rebuildAchievementsForUser(any()); + verify(activitySummaryService, never()).updateWeeklySummary(any(), any()); + verify(activitySummaryService, never()).updateMonthlySummary(any(), any()); + verify(activitySummaryService, never()).updateYearlySummary(any(), any()); } @Test