@gravity-ui/data-source
Version:
A wrapper around data fetching
77 lines (76 loc) • 2.85 kB
JavaScript
;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _react = require("@testing-library/react");
var _core = require("../../../core");
var _useQueryResponses = require("../useQueryResponses");
var _useRefetchAll = require("../useRefetchAll");
var _useRefetchErrored = require("../useRefetchErrored");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
jest.mock('../useRefetchAll');
jest.mock('../useRefetchErrored');
jest.mock('../../../core', function () {
var originalModule = jest.requireActual('../../../core');
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalModule), {}, {
getStatus: jest.fn(),
getError: jest.fn()
});
});
describe('useQueryResponses', function () {
var mockRefetchAll = jest.fn();
var mockRefetchErrored = jest.fn();
beforeEach(function () {
jest.clearAllMocks();
_useRefetchAll.useRefetchAll.mockReturnValue(mockRefetchAll);
_useRefetchErrored.useRefetchErrored.mockReturnValue(mockRefetchErrored);
_core.getStatus.mockReturnValue('success');
_core.getError.mockReturnValue(null);
});
it('should return combined status, error, and refetch functions', function () {
var responses = [{
status: 'loading',
error: null,
refetch: jest.fn()
}, {
status: 'success',
error: null,
refetch: jest.fn()
}, {
status: 'error',
error: {
message: 'Error'
},
refetch: jest.fn()
}];
var _renderHook = (0, _react.renderHook)(function () {
return (0, _useQueryResponses.useQueryResponses)(responses);
}),
result = _renderHook.result;
expect(_core.getStatus).toHaveBeenCalledWith(responses);
expect(_core.getError).toHaveBeenCalledWith(responses);
expect(_useRefetchAll.useRefetchAll).toHaveBeenCalledWith(responses);
expect(_useRefetchErrored.useRefetchErrored).toHaveBeenCalledWith(responses);
expect(result.current).toEqual({
status: 'success',
error: null,
refetch: mockRefetchAll,
refetchErrored: mockRefetchErrored
});
});
it('should handle empty responses array', function () {
var _renderHook2 = (0, _react.renderHook)(function () {
return (0, _useQueryResponses.useQueryResponses)([]);
}),
result = _renderHook2.result;
expect(_core.getStatus).toHaveBeenCalledWith([]);
expect(_core.getError).toHaveBeenCalledWith([]);
expect(_useRefetchAll.useRefetchAll).toHaveBeenCalledWith([]);
expect(_useRefetchErrored.useRefetchErrored).toHaveBeenCalledWith([]);
expect(result.current).toEqual({
status: 'success',
error: null,
refetch: mockRefetchAll,
refetchErrored: mockRefetchErrored
});
});
});
// #sourceMappingURL=useQueryResponses.test.js.map