@gravity-ui/data-source
Version:
A wrapper around data fetching
117 lines (116 loc) • 3.4 kB
JavaScript
;
var _react = require("@testing-library/react");
var _useRefetchErrored = require("../useRefetchErrored");
describe('useRefetchErrored', function () {
it('should return a function that calls refetch only on states with errors', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var refetch3 = jest.fn();
var states = [{
error: {
message: 'Error 1'
},
refetch: refetch1
}, {
error: null,
refetch: refetch2
}, {
error: {
message: 'Error 3'
},
refetch: refetch3
}];
var _renderHook = (0, _react.renderHook)(function () {
return (0, _useRefetchErrored.useRefetchErrored)(states);
}),
result = _renderHook.result;
expect(result.current).toEqual(expect.any(Function));
(0, _react.act)(function () {
result.current();
});
expect(refetch1).toHaveBeenCalledTimes(1);
expect(refetch2).toHaveBeenCalledTimes(0);
expect(refetch3).toHaveBeenCalledTimes(1);
});
it('should not call refetch if no states have errors', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var states = [{
error: null,
refetch: refetch1
}, {
error: null,
refetch: refetch2
}];
var _renderHook2 = (0, _react.renderHook)(function () {
return (0, _useRefetchErrored.useRefetchErrored)(states);
}),
result = _renderHook2.result;
(0, _react.act)(function () {
result.current();
});
expect(refetch1).not.toHaveBeenCalled();
expect(refetch2).not.toHaveBeenCalled();
});
it('should handle empty states array', function () {
var _renderHook3 = (0, _react.renderHook)(function () {
return (0, _useRefetchErrored.useRefetchErrored)([]);
}),
result = _renderHook3.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 = [{
error: {
message: 'Error 1'
},
refetch: refetch1
}, {
error: null,
refetch: refetch2
}];
var _renderHook4 = (0, _react.renderHook)(function () {
return (0, _useRefetchErrored.useRefetchErrored)(states);
}),
result = _renderHook4.result,
rerender = _renderHook4.rerender;
var firstRefetchErrored = result.current;
rerender();
expect(result.current).toBe(firstRefetchErrored);
});
it('should create a new refetch function when dependencies change', function () {
var refetch1 = jest.fn();
var refetch2 = jest.fn();
var states = [{
error: {
message: 'Error 1'
},
refetch: refetch1
}, {
error: null,
refetch: refetch2
}];
var _renderHook5 = (0, _react.renderHook)(function () {
return (0, _useRefetchErrored.useRefetchErrored)(states);
}),
result = _renderHook5.result,
rerender = _renderHook5.rerender;
var firstRefetchErrored = result.current;
states = [{
error: {
message: 'New Error 1'
},
refetch: refetch1
}, {
error: null,
refetch: refetch2
}];
rerender();
expect(result.current).not.toBe(firstRefetchErrored);
});
});
// #sourceMappingURL=useRefetchErrored.test.js.map