summaryrefslogtreecommitdiff
path: root/spec/frontend/analytics/usage_trends/apollo_mock_data.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/analytics/usage_trends/apollo_mock_data.js')
-rw-r--r--spec/frontend/analytics/usage_trends/apollo_mock_data.js36
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);
+};