mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-14 16:51:33 +10:00
Firebase mock refactoring
This commit is contained in:
@ -1,21 +1,51 @@
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
||||||
const demoResumeId = 'demore';
|
let onAuthStateChangedObservers = [];
|
||||||
const emptyResumeId = 'mtre01';
|
|
||||||
let resumesDictionary = {};
|
let resumesDictionary = {};
|
||||||
let useDemoResume = false;
|
let useDemoResume = false;
|
||||||
|
|
||||||
let onAuthStateChangedObservers = [];
|
const auth = () => {
|
||||||
const testUser = {
|
const testUser = {
|
||||||
displayName: 'Test User',
|
displayName: 'Test User',
|
||||||
email: 'noemail@noemail.com',
|
email: 'noemail@noemail.com',
|
||||||
|
};
|
||||||
|
|
||||||
|
const __init = () => {
|
||||||
|
onAuthStateChangedObservers = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
__init,
|
||||||
|
onAuthStateChanged,
|
||||||
|
signInAnonymously,
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const __init = () => {
|
const database = () => {
|
||||||
|
const demoResumeId = 'demore';
|
||||||
|
const emptyResumeId = 'mtre01';
|
||||||
|
|
||||||
|
const __init = () => {
|
||||||
resumesDictionary = {};
|
resumesDictionary = {};
|
||||||
useDemoResume = false;
|
useDemoResume = false;
|
||||||
onAuthStateChangedObservers = [];
|
|
||||||
|
|
||||||
const demoResume = __readFile('../src/data/demoState.json');
|
const demoResume = __readFile('../src/data/demoState.json');
|
||||||
resumesDictionary[demoResumeId] = demoResume;
|
resumesDictionary[demoResumeId] = demoResume;
|
||||||
@ -32,58 +62,38 @@ const __init = () => {
|
|||||||
date.setMonth(date.getMonth() - 2);
|
date.setMonth(date.getMonth() - 2);
|
||||||
resume.createdAt = date.valueOf();
|
resume.createdAt = date.valueOf();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const __readFile = (fileRelativePath) => {
|
const __readFile = (fileRelativePath) => {
|
||||||
const fileAbsolutePath = path.resolve(__dirname, fileRelativePath);
|
const fileAbsolutePath = path.resolve(__dirname, fileRelativePath);
|
||||||
const fileBuffer = fs.readFileSync(fileAbsolutePath);
|
const fileBuffer = fs.readFileSync(fileAbsolutePath);
|
||||||
const fileData = JSON.parse(fileBuffer);
|
const fileData = JSON.parse(fileBuffer);
|
||||||
return fileData;
|
return fileData;
|
||||||
};
|
};
|
||||||
|
|
||||||
const __getResume = () => {
|
const __getResume = () => {
|
||||||
return useDemoResume
|
return useDemoResume
|
||||||
? resumesDictionary[demoResumeId]
|
? resumesDictionary[demoResumeId]
|
||||||
: resumesDictionary[emptyResumeId];
|
: resumesDictionary[emptyResumeId];
|
||||||
};
|
|
||||||
|
|
||||||
const __useDemoResume = (value) => {
|
|
||||||
useDemoResume = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
const __getResumeId = () => {
|
|
||||||
return __getResume().id;
|
|
||||||
};
|
|
||||||
|
|
||||||
const onAuthStateChanged = (observer) => {
|
|
||||||
onAuthStateChangedObservers.push(observer);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
onAuthStateChangedObservers = onAuthStateChangedObservers.filter(
|
|
||||||
(observer) => observer !== observer,
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
const signInAnonymously = async () => {
|
const __useDemoResume = (value) => {
|
||||||
onAuthStateChangedObservers.forEach((observer) => observer(testUser));
|
useDemoResume = value;
|
||||||
|
};
|
||||||
|
|
||||||
var result = await Promise.resolve(testUser);
|
return {
|
||||||
return result;
|
__init,
|
||||||
};
|
__getResume,
|
||||||
|
__useDemoResume,
|
||||||
export default {
|
|
||||||
database: jest.fn().mockReturnValue({
|
|
||||||
ref: jest.fn().mockReturnValue({
|
ref: jest.fn().mockReturnValue({
|
||||||
once: jest.fn().mockResolvedValue({
|
once: jest.fn().mockResolvedValue({
|
||||||
val: jest.fn(__getResume),
|
val: jest.fn(__getResume),
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
}),
|
};
|
||||||
auth: jest.fn().mockReturnValue({
|
|
||||||
onAuthStateChanged: onAuthStateChanged,
|
|
||||||
signInAnonymously: signInAnonymously,
|
|
||||||
}),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export { __init, __useDemoResume, __getResumeId };
|
export default {
|
||||||
|
auth,
|
||||||
|
database,
|
||||||
|
};
|
||||||
|
|||||||
@ -1,11 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render, cleanup } from '@testing-library/react';
|
import { act, render, cleanup } from '@testing-library/react';
|
||||||
|
|
||||||
import firebase, {
|
import firebaseMock from 'gatsby-plugin-firebase';
|
||||||
__init as firebaseMockInit,
|
|
||||||
__useDemoResume as firebaseMockUseDemoResume,
|
|
||||||
__getResumeId as firebaseMockGetResumeId,
|
|
||||||
} from 'gatsby-plugin-firebase';
|
|
||||||
|
|
||||||
import { UserProvider } from '../../../contexts/UserContext';
|
import { UserProvider } from '../../../contexts/UserContext';
|
||||||
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
|
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
|
||||||
@ -15,29 +11,34 @@ import { StorageProvider } from '../../../contexts/StorageContext';
|
|||||||
import Builder from '../builder';
|
import Builder from '../builder';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
firebaseMockInit();
|
firebaseMock.auth().__init();
|
||||||
|
firebaseMock.database().__init();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(cleanup);
|
afterEach(cleanup);
|
||||||
|
|
||||||
it('renders correctly', async () => {
|
it('renders correctly', async () => {
|
||||||
firebaseMockUseDemoResume(true);
|
firebaseMock.database().__useDemoResume(true);
|
||||||
const resumeId = firebaseMockGetResumeId();
|
const resume = firebaseMock.database().__getResume();
|
||||||
|
|
||||||
const container = render(
|
const element = (
|
||||||
<UserProvider>
|
<UserProvider>
|
||||||
<DatabaseProvider>
|
<DatabaseProvider>
|
||||||
<ResumeProvider>
|
<ResumeProvider>
|
||||||
<StorageProvider>
|
<StorageProvider>
|
||||||
<Builder id={resumeId} />
|
<Builder id={resume.id} />
|
||||||
</StorageProvider>
|
</StorageProvider>
|
||||||
</ResumeProvider>
|
</ResumeProvider>
|
||||||
</DatabaseProvider>
|
</DatabaseProvider>
|
||||||
</UserProvider>,
|
</UserProvider>
|
||||||
);
|
);
|
||||||
|
let container = null;
|
||||||
|
|
||||||
await firebase.auth().signInAnonymously();
|
act(() => {
|
||||||
|
container = render(element);
|
||||||
|
});
|
||||||
|
|
||||||
|
await firebaseMock.auth().signInAnonymously();
|
||||||
|
|
||||||
expect(container).toBeTruthy();
|
expect(container).toBeTruthy();
|
||||||
//expect(container).toBeInTheDocument();
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user