From b992bc4b73dca6dcad77645f0cd88978bda3693a Mon Sep 17 00:00:00 2001 From: gianantoniopini <63844628+gianantoniopini@users.noreply.github.com> Date: Thu, 10 Dec 2020 17:03:56 +0100 Subject: [PATCH] Attempt to test Builder, using Firebase mock --- __mocks__/gatsby-plugin-firebase.js | 14 ++++++++ src/contexts/__mocks__/DatabaseContext.js | 4 +-- src/contexts/__mocks__/ResumeContext.js | 1 + .../__tests__/builder.mockContexts.test.js | 32 +++++++++++++++++++ .../__tests__/builder.mockFirebase.test.js | 30 +++++++++++++++++ src/pages/app/__tests__/builder.test.js | 22 ------------- 6 files changed, 79 insertions(+), 24 deletions(-) create mode 100644 __mocks__/gatsby-plugin-firebase.js create mode 100644 src/contexts/__mocks__/ResumeContext.js create mode 100644 src/pages/app/__tests__/builder.mockContexts.test.js create mode 100644 src/pages/app/__tests__/builder.mockFirebase.test.js delete mode 100644 src/pages/app/__tests__/builder.test.js diff --git a/__mocks__/gatsby-plugin-firebase.js b/__mocks__/gatsby-plugin-firebase.js new file mode 100644 index 00000000..354d09fd --- /dev/null +++ b/__mocks__/gatsby-plugin-firebase.js @@ -0,0 +1,14 @@ +import demoResume from '../src/data/demoState.json'; + +module.exports = { + database: jest.fn().mockReturnValue({ + ref: jest.fn().mockReturnValue({ + once: jest.fn().mockResolvedValue({ + val: jest.fn().mockReturnValue(demoResume), + }), + }), + }), + auth: jest.fn().mockReturnValue({ + onAuthStateChanged: jest.fn(), + }), +}; diff --git a/src/contexts/__mocks__/DatabaseContext.js b/src/contexts/__mocks__/DatabaseContext.js index a95b30f0..3dd23d02 100644 --- a/src/contexts/__mocks__/DatabaseContext.js +++ b/src/contexts/__mocks__/DatabaseContext.js @@ -1,4 +1,4 @@ -import { createContext, memo, useState } from 'react'; +import React, { createContext, memo, useState } from 'react'; const defaultState = { __resumes: [], @@ -15,7 +15,7 @@ const defaultState = { const DatabaseContext = createContext(defaultState); const DatabaseProvider = ({ children }) => { - const [__resumes] = useState([]); + const [__resumes] = useState([{ id: 'ab1c2d' }]); const [isUpdating] = useState(false); diff --git a/src/contexts/__mocks__/ResumeContext.js b/src/contexts/__mocks__/ResumeContext.js new file mode 100644 index 00000000..f053ebf7 --- /dev/null +++ b/src/contexts/__mocks__/ResumeContext.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/src/pages/app/__tests__/builder.mockContexts.test.js b/src/pages/app/__tests__/builder.mockContexts.test.js new file mode 100644 index 00000000..d015668b --- /dev/null +++ b/src/pages/app/__tests__/builder.mockContexts.test.js @@ -0,0 +1,32 @@ +jest.mock('../../../contexts/UserContext'); +jest.mock('../../../contexts/DatabaseContext'); +jest.mock('../../../contexts/ResumeContext'); +jest.mock('../../../contexts/StorageContext'); + +import React from 'react'; +import { render, cleanup } from '@testing-library/react'; + +import { UserProvider } from '../../../contexts/UserContext'; +import { DatabaseProvider } from '../../../contexts/DatabaseContext'; +import { ResumeProvider } from '../../../contexts/ResumeContext'; +import { StorageProvider } from '../../../contexts/StorageContext'; + +import Builder from '../builder'; + +afterEach(cleanup); + +it('renders correctly', () => { + const resumeId = 'ab1c2d'; + //const resumes = [{ id: resumeId }]; + // The call below does not seem to work, therefore the "resumes" array initial value is currently set directly in the mock. + //DatabaseProvider.__resumes = resumes; + + const container = render( + + + , + ); + + expect(container).toBeTruthy(); + //expect(container).toBeInTheDocument(); +}); diff --git a/src/pages/app/__tests__/builder.mockFirebase.test.js b/src/pages/app/__tests__/builder.mockFirebase.test.js new file mode 100644 index 00000000..74e4e996 --- /dev/null +++ b/src/pages/app/__tests__/builder.mockFirebase.test.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { render, cleanup } from '@testing-library/react'; + +import { UserProvider } from '../../../contexts/UserContext'; +import { DatabaseProvider } from '../../../contexts/DatabaseContext'; +import { ResumeProvider } from '../../../contexts/ResumeContext'; +import { StorageProvider } from '../../../contexts/StorageContext'; + +import Builder from '../builder'; + +afterEach(cleanup); + +it('renders correctly', () => { + const resumeId = 'ab1c2d'; + + const container = render( + + + + + + + + + , + ); + + expect(container).toBeTruthy(); + //expect(container).toBeInTheDocument(); +}); diff --git a/src/pages/app/__tests__/builder.test.js b/src/pages/app/__tests__/builder.test.js deleted file mode 100644 index 901d6b22..00000000 --- a/src/pages/app/__tests__/builder.test.js +++ /dev/null @@ -1,22 +0,0 @@ -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.Provider.__resumes = resumes; - - const { container } = render(); - - expect(container).toBeTruthy(); - expect(container).toBeInTheDocument(); -});