package com.zy.core.thread.support; import com.zy.common.utils.RedisUtil; import org.junit.jupiter.api.Test; 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 observe_writesRedisKeyOnlyOnFirstSightingOfLoadedTask() { RedisUtil redisUtil = mock(RedisUtil.class); RecentStationArrivalTracker tracker = new RecentStationArrivalTracker(redisUtil, 10_000L); 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)); } }