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));
|
}
|
}
|