const defaultPageInfo = { hasNextPage: false, hasPreviousPage: false, startCursor: null, endCursor: null, }; export const mockApolloResponse = ({ hasNextPage = false, key, data }) => ({ data: { [key]: { pageInfo: { ...defaultPageInfo, hasNextPage }, nodes: data, }, }, }); export const mockQueryResponse = ({ key, data = [], loading = false, additionalData = [] }) => { const hasNextPage = Boolean(additionalData.length); const response = mockApolloResponse({ hasNextPage, key, data }); if (loading) { return jest.fn().mockReturnValue(new Promise(() => {})); } if (hasNextPage) { return jest .fn() .mockResolvedValueOnce(response) .mockResolvedValueOnce( mockApolloResponse({ hasNextPage: false, key, data: additionalData, }), ); } return jest.fn().mockResolvedValue(response); };