UNPKG

@gravity-ui/data-source

Version:
74 lines 2.46 kB
import { getProgressiveRefetch } from '../getProgressiveRefetch'; describe('getProgressiveRefetch', function () { it('should return a function', function () { var refetchFn = getProgressiveRefetch({ minInterval: 1000, maxInterval: 10000 }); expect(refetchFn).toEqual(expect.any(Function)); }); it('should return minInterval for the first call (count = 0)', function () { var minInterval = 1000; var maxInterval = 10000; var refetchFn = getProgressiveRefetch({ minInterval: minInterval, maxInterval: maxInterval }); var result = refetchFn({}, 0); expect(result).toBe(minInterval); }); it('should increase interval by multiplier for each count', function () { var minInterval = 1000; var maxInterval = 10000; var multiplier = 2; var refetchFn = getProgressiveRefetch({ minInterval: minInterval, maxInterval: maxInterval, multiplier: multiplier }); expect(refetchFn({}, 0)).toBe(1000); expect(refetchFn({}, 1)).toBe(2000); expect(refetchFn({}, 2)).toBe(4000); expect(refetchFn({}, 3)).toBe(8000); }); it('should not exceed maxInterval', function () { var minInterval = 1000; var maxInterval = 5000; var multiplier = 2; var refetchFn = getProgressiveRefetch({ minInterval: minInterval, maxInterval: maxInterval, multiplier: multiplier }); expect(refetchFn({}, 0)).toBe(1000); expect(refetchFn({}, 1)).toBe(2000); expect(refetchFn({}, 2)).toBe(4000); expect(refetchFn({}, 3)).toBe(5000); expect(refetchFn({}, 4)).toBe(5000); }); it('should use default multiplier (2) if not provided', function () { var minInterval = 1000; var maxInterval = 10000; var refetchFn = getProgressiveRefetch({ minInterval: minInterval, maxInterval: maxInterval }); expect(refetchFn({}, 0)).toBe(1000); expect(refetchFn({}, 1)).toBe(2000); expect(refetchFn({}, 2)).toBe(4000); }); it('should work with custom multiplier', function () { var minInterval = 1000; var maxInterval = 10000; var multiplier = 1.5; var refetchFn = getProgressiveRefetch({ minInterval: minInterval, maxInterval: maxInterval, multiplier: multiplier }); expect(refetchFn({}, 0)).toBe(1000); expect(refetchFn({}, 1)).toBe(1500); expect(refetchFn({}, 2)).toBe(2250); }); }); // #sourceMappingURL=getProgressiveRefetch.test.js.map