Skip to content
Source
Sign inSign up
Open History to see the last commit

work-shimmer-steps.test.ts

30 lines1.0 KB

1import { expect, it, vi } from "vite-plus/test";
2​
3import {
4 SHIMMER_PAUSE_MS,
5 SHIMMER_STEPS,
6 SHIMMER_SWEEP_MS,
7 startShimmerSteps,
8} from "./work-shimmer-steps";
9​
10it("steps the sweep, stays quiet through the pause, and stops on cleanup", () => {
11 using _timers = { [Symbol.dispose]: () => vi.useRealTimers() };
12 vi.useFakeTimers();
13 const values: number[] = [];
14 const stop = startShimmerSteps({ setValue: (value) => values.push(value) });
15 const valuesDuring = (ms: number) => {
16 vi.advanceTimersByTime(ms);
17 return values.splice(0);
18 };
19​
20 const sweep = valuesDuring(SHIMMER_SWEEP_MS);
21 expect(sweep).toHaveLength(SHIMMER_STEPS);
22 expect(sweep.at(-1)).toBe(1);
23 expect(sweep).toEqual(Array.from({ length: SHIMMER_STEPS }, (_, i) => (i + 1) / SHIMMER_STEPS));
24 expect(valuesDuring(SHIMMER_PAUSE_MS)).toEqual([]);
25 expect(valuesDuring(SHIMMER_SWEEP_MS)).toEqual(sweep);
26​
27 stop();
28 expect(vi.getTimerCount()).toBe(0);
29 expect(valuesDuring((SHIMMER_SWEEP_MS + SHIMMER_PAUSE_MS) * 2)).toEqual([]);
30});