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(); +});