From cbb00d4729243e4949b3c921fc2f94cb03ca8aaa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 27 三月 2026 18:47:43 +0800
Subject: [PATCH] #

---
 src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java |   39 +++++++++++++++++++++++++++++----------
 1 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java b/src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java
index 5cfe204..96b85ad 100644
--- a/src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java
+++ b/src/test/java/com/zy/core/thread/support/RecentStationArrivalTrackerTest.java
@@ -1,25 +1,44 @@
 package com.zy.core.thread.support;
 
+import com.zy.common.utils.RedisUtil;
 import org.junit.jupiter.api.Test;
-
-import java.util.concurrent.atomic.AtomicLong;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 class RecentStationArrivalTrackerTest {
 
     @Test
-    void hasRecentArrival_returnsTrueOnlyWithinRetentionWindow() {
-        AtomicLong now = new AtomicLong(1_000L);
-        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(1_000L, now::get);
+    void observe_writesRedisKeyOnlyOnFirstSightingOfLoadedTask() {
+        RedisUtil redisUtil = mock(RedisUtil.class);
+        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
 
-        tracker.record(12, 1001);
+        tracker.observe(12, 1001, true);
+        tracker.observe(12, 1001, true);
+
+        verify(redisUtil).set(eq("station_recent_arrival_12_1001"), eq("1"), eq(10L));
+    }
+
+    @Test
+    void hasRecentArrival_returnsFalseAfterRedisKeyExpires() {
+        RedisUtil redisUtil = mock(RedisUtil.class);
+        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
+
+        when(redisUtil.get("station_recent_arrival_12_1001")).thenReturn(null);
+        assertFalse(tracker.hasRecentArrival(12, 1001));
+    }
+
+    @Test
+    void hasRecentArrival_returnsTrueWhenRedisKeyExists() {
+        RedisUtil redisUtil = mock(RedisUtil.class);
+        RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L);
+
+        when(redisUtil.get("station_recent_arrival_12_1001")).thenReturn("1");
 
         assertTrue(tracker.hasRecentArrival(12, 1001));
-
-        now.addAndGet(1_001L);
-
-        assertFalse(tracker.hasRecentArrival(12, 1001));
     }
 }

--
Gitblit v1.9.1