From 9736b2c6d492d170e4fbf26ae2f2acc452c9ca4c Mon Sep 17 00:00:00 2001
From: gianantoniopini <63844628+gianantoniopini@users.noreply.github.com>
Date: Thu, 10 Dec 2020 11:13:03 +0100
Subject: [PATCH] Attempt to test Builder, using DatabaseContext mock.
---
__mocks__/gatsby.js | 22 ++++++-
src/contexts/__mocks__/DatabaseContext.js | 70 +++++++++++++++++++++++
src/contexts/__mocks__/StorageContext.js | 1 +
src/contexts/__mocks__/UserContext.js | 1 +
src/pages/app/__tests__/builder.test.js | 22 +++++++
5 files changed, 115 insertions(+), 1 deletion(-)
create mode 100644 src/contexts/__mocks__/DatabaseContext.js
create mode 100644 src/contexts/__mocks__/StorageContext.js
create mode 100644 src/contexts/__mocks__/UserContext.js
create mode 100644 src/pages/app/__tests__/builder.test.js
diff --git a/__mocks__/gatsby.js b/__mocks__/gatsby.js
index ac63cdbd..c9c0bae4 100644
--- a/__mocks__/gatsby.js
+++ b/__mocks__/gatsby.js
@@ -11,5 +11,25 @@ module.exports = {
}),
),
StaticQuery: jest.fn(),
- useStaticQuery: jest.fn(),
+ useStaticQuery: jest.fn().mockReturnValue({
+ site: {
+ siteMetadata: {
+ title: '',
+ description: '',
+ author: '',
+ siteUrl: '',
+ },
+ },
+ file: {
+ childImageSharp: {
+ fluid(maxWidth = 512) {
+ base64;
+ aspectRatio;
+ src;
+ srcSet;
+ sizes;
+ },
+ },
+ },
+ }),
};
diff --git a/src/contexts/__mocks__/DatabaseContext.js b/src/contexts/__mocks__/DatabaseContext.js
new file mode 100644
index 00000000..0bd78517
--- /dev/null
+++ b/src/contexts/__mocks__/DatabaseContext.js
@@ -0,0 +1,70 @@
+import { createContext, memo, useState } from 'react';
+
+const defaultState = {
+ __setResumes: () => {},
+ isUpdating: false,
+ createResume: async () => {},
+ duplicateResume: async () => {},
+ deleteResume: () => {},
+ getResume: async () => {},
+ getResumes: async () => {},
+ updateResume: async () => {},
+ debouncedUpdateResume: async () => {},
+};
+
+const DatabaseContext = createContext(defaultState);
+
+const DatabaseProvider = ({ children }) => {
+ const [isUpdating] = useState(false);
+
+ let resumes = {};
+
+ const __setResumes = (newResumes) => {
+ resumes = newResumes;
+ };
+
+ const getResume = async (id) => {
+ try {
+ const resume = await resumes.find((resume) => {
+ return resume.id === id;
+ });
+
+ return resume !== 'undefined' ? resume : null;
+ } catch (error) {
+ return null;
+ }
+ };
+
+ const createResume = async ({ name }) => {};
+
+ const duplicateResume = async (originalResume) => {};
+
+ const updateResume = async (resume) => {};
+
+ const debouncedUpdateResume = {};
+
+ const deleteResume = async (id) => {};
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default DatabaseContext;
+
+const memoizedProvider = memo(DatabaseProvider);
+
+export { memoizedProvider as DatabaseProvider };
diff --git a/src/contexts/__mocks__/StorageContext.js b/src/contexts/__mocks__/StorageContext.js
new file mode 100644
index 00000000..f053ebf7
--- /dev/null
+++ b/src/contexts/__mocks__/StorageContext.js
@@ -0,0 +1 @@
+module.exports = {};
diff --git a/src/contexts/__mocks__/UserContext.js b/src/contexts/__mocks__/UserContext.js
new file mode 100644
index 00000000..f053ebf7
--- /dev/null
+++ b/src/contexts/__mocks__/UserContext.js
@@ -0,0 +1 @@
+module.exports = {};
diff --git a/src/pages/app/__tests__/builder.test.js b/src/pages/app/__tests__/builder.test.js
new file mode 100644
index 00000000..316322f8
--- /dev/null
+++ b/src/pages/app/__tests__/builder.test.js
@@ -0,0 +1,22 @@
+jest.mock('../../../contexts/DatabaseContext');
+jest.mock('../../../contexts/UserContext');
+jest.mock('../../../contexts/StorageContext');
+
+import React from 'react';
+import { render, cleanup } from '@testing-library/react';
+
+//import DatabaseContext from '../../../contexts/DatabaseContext';
+import Builder from '../builder';
+
+afterEach(cleanup);
+
+it('renders correctly', () => {
+ const resumeId = 'ab1c2d';
+ //const resumes = [{ id: resumeId }];
+ //DatabaseContext.__setResumes(resumes);
+
+ const { container } = render();
+
+ expect(container).toBeTruthy();
+ expect(container).toBeInTheDocument();
+});