40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
import {
|
|
GLOBAL_SESSIONS_REFRESH_INTERVAL_MS,
|
|
startGlobalSessionsPolling,
|
|
} from './useGlobalSessionsPolling';
|
|
|
|
describe('global sessions polling lifecycle', () => {
|
|
test('loads immediately, owns one interval, and clears it on disposal', () => {
|
|
let initialLoads = 0;
|
|
let refreshes = 0;
|
|
let scheduledCallback = () => {};
|
|
let scheduledIntervals = 0;
|
|
let scheduledDelay = 0;
|
|
let clearedIntervalId: number | null = null;
|
|
|
|
const dispose = startGlobalSessionsPolling(
|
|
() => { initialLoads += 1; },
|
|
() => { refreshes += 1; },
|
|
(callback, delay) => {
|
|
scheduledIntervals += 1;
|
|
scheduledCallback = callback;
|
|
scheduledDelay = delay;
|
|
return 42;
|
|
},
|
|
(intervalId) => { clearedIntervalId = intervalId; },
|
|
);
|
|
|
|
expect(initialLoads).toBe(1);
|
|
expect(refreshes).toBe(0);
|
|
expect(scheduledIntervals).toBe(1);
|
|
expect(scheduledDelay).toBe(GLOBAL_SESSIONS_REFRESH_INTERVAL_MS);
|
|
|
|
scheduledCallback();
|
|
expect(refreshes).toBe(1);
|
|
|
|
dispose();
|
|
expect(clearedIntervalId).toBe(42);
|
|
});
|
|
});
|