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