diff --git a/__mocks__/file-mock.js b/__mocks__/file-mock.js index 86059f36..c49554fa 100644 --- a/__mocks__/file-mock.js +++ b/__mocks__/file-mock.js @@ -1 +1,2 @@ -module.exports = 'test-file-stub'; +const mockFile = 'test-file-stub'; +export default mockFile; diff --git a/__mocks__/gatsby-plugin-firebase.js b/__mocks__/gatsby-plugin-firebase.js index 989bc2ab..90638c02 100644 --- a/__mocks__/gatsby-plugin-firebase.js +++ b/__mocks__/gatsby-plugin-firebase.js @@ -6,9 +6,16 @@ const emptyResumeId = 'mtre01'; let resumesDictionary = {}; let useDemoResume = false; +let onAuthStateChangedObservers = []; +const testUser = { + displayName: 'Test User', + email: 'noemail@noemail.com', +}; + const __init = () => { resumesDictionary = {}; useDemoResume = false; + onAuthStateChangedObservers = []; const demoResume = __readFile('../src/data/demoState.json'); resumesDictionary[demoResumeId] = demoResume; @@ -48,18 +55,34 @@ const __getResumeId = () => { return __getResume().id; }; +const onAuthStateChanged = (observer) => { + onAuthStateChangedObservers.push(observer); + + return () => { + onAuthStateChangedObservers = onAuthStateChangedObservers.filter( + (observer) => observer !== observer, + ); + }; +}; + +const signInAnonymously = async () => { + onAuthStateChangedObservers.forEach((observer) => observer(testUser)); + + var result = await Promise.resolve(testUser); + return result; +}; + export default { database: jest.fn().mockReturnValue({ ref: jest.fn().mockReturnValue({ once: jest.fn().mockResolvedValue({ - val: jest.fn().mockImplementation(() => { - return __getResume(); - }), + val: jest.fn(__getResume), }), }), }), auth: jest.fn().mockReturnValue({ - onAuthStateChanged: jest.fn().mockReturnValue(jest.fn()), + onAuthStateChanged: onAuthStateChanged, + signInAnonymously: signInAnonymously, }), }; diff --git a/src/pages/app/__tests__/builder.mockFirebase.test.js b/src/pages/app/__tests__/builder.mockFirebase.test.js index bc829a8c..8dafd73e 100644 --- a/src/pages/app/__tests__/builder.mockFirebase.test.js +++ b/src/pages/app/__tests__/builder.mockFirebase.test.js @@ -1,7 +1,7 @@ import React from 'react'; import { render, cleanup } from '@testing-library/react'; -import { +import firebase, { __init as firebaseMockInit, __useDemoResume as firebaseMockUseDemoResume, __getResumeId as firebaseMockGetResumeId, @@ -36,6 +36,8 @@ it('renders correctly', async () => { , ); + await firebase.auth().signInAnonymously(); + expect(container).toBeTruthy(); //expect(container).toBeInTheDocument(); });