diff options
Diffstat (limited to 'spec/frontend/analytics/usage_trends/apollo_mock_data.js')
-rw-r--r-- | spec/frontend/analytics/usage_trends/apollo_mock_data.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/frontend/analytics/usage_trends/apollo_mock_data.js b/spec/frontend/analytics/usage_trends/apollo_mock_data.js new file mode 100644 index 00000000000..98eabd577ee --- /dev/null +++ b/spec/frontend/analytics/usage_trends/apollo_mock_data.js @@ -0,0 +1,36 @@ +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); +}; |