UNPKG

@gravity-ui/data-source

Version:
77 lines 2.27 kB
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