@gravity-ui/data-source
Version:
A wrapper around data fetching
74 lines • 2.46 kB
JavaScript
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