@gravity-ui/data-source
Version:
A wrapper around data fetching
79 lines (78 loc) • 2.43 kB
JavaScript
;
var _react = require("@testing-library/react");
var _useRefetchAll = require("../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 = (0, _react.renderHook)(function () {
return (0, _useRefetchAll.useRefetchAll)(states);
}),
result = _renderHook.result;
expect(result.current).toEqual(expect.any(Function));
(0, _react.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 = (0, _react.renderHook)(function () {
return (0, _useRefetchAll.useRefetchAll)([]);
}),
result = _renderHook2.result;
(0, _react.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 = (0, _react.renderHook)(function () {
return (0, _useRefetchAll.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 = (0, _react.renderHook)(function () {
return (0, _useRefetchAll.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