@gravity-ui/data-source
Version:
A wrapper around data fetching
77 lines • 2.27 kB
JavaScript
import { act, renderHook } from '@testing-library/react';
import { useRefetchAll } from '../useRefetchAll';
describe('useRefetchAll', function () {
it('should return a function that calls refetch on all states', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var refetch3 = jest.fn();
var states = [{
refetch: refetch1
}, {
refetch: refetch2
}, {
refetch: refetch3
}];
var _renderHook = renderHook(function () {
return useRefetchAll(states);
}),
result = _renderHook.result;
expect(result.current).toEqual(expect.any(Function));
act(function () {
result.current();
});
expect(refetch1).toHaveBeenCalledTimes(1);
expect(refetch2).toHaveBeenCalledTimes(1);
expect(refetch3).toHaveBeenCalledTimes(1);
});
it('should handle empty states array', function () {
var _renderHook2 = renderHook(function () {
return useRefetchAll([]);
}),
result = _renderHook2.result;
act(function () {
result.current();
});
});
it('should memoize the refetch function when dependencies do not change', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var states = [{
refetch: refetch1
}, {
refetch: refetch2
}];
var _renderHook3 = renderHook(function () {
return useRefetchAll(states);
}),
result = _renderHook3.result,
rerender = _renderHook3.rerender;
var firstRefetchAll = result.current;
rerender();
expect(result.current).toBe(firstRefetchAll);
});
it('should create a new refetch function when dependencies change', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var refetch3 = jest.fn();
var states = [{
refetch: refetch1
}, {
refetch: refetch2
}];
var _renderHook4 = renderHook(function () {
return useRefetchAll(states);
}),
result = _renderHook4.result,
rerender = _renderHook4.rerender;
var firstRefetchAll = result.current;
states = [{
refetch: refetch1
}, {
refetch: refetch3
}];
rerender();
expect(result.current).not.toBe(firstRefetchAll);
});
});
// #sourceMappingURL=useRefetchAll.test.js.map