Deleted obsolete Context mocks; added more Asserts to builder.test

This commit is contained in:
gianantoniopini
2020-12-16 17:03:28 +01:00
parent a16f19a26f
commit a79de37ac9
7 changed files with 91 additions and 151 deletions

View File

@ -1,70 +0,0 @@
import React, { createContext, memo, useState } from 'react';
let resumes = [];
const __setResumes = (value) => {
resumes = value;
};
const defaultState = {
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);
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 (
<DatabaseContext.Provider
value={{
isUpdating,
getResume,
createResume,
duplicateResume,
updateResume,
deleteResume,
debouncedUpdateResume,
}}
>
{children}
</DatabaseContext.Provider>
);
};
export default DatabaseContext;
const memoizedProvider = memo(DatabaseProvider);
export { memoizedProvider as DatabaseProvider };
export { __setResumes };

View File

@ -1 +0,0 @@
module.exports = {};

View File

@ -1 +0,0 @@
module.exports = {};

View File

@ -1 +0,0 @@
module.exports = {};

View File

@ -1,34 +0,0 @@
//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,
__setResumes,
} 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 }];
__setResumes(resumes);
const container = render(
<DatabaseProvider>
<Builder id={resumeId} />
</DatabaseProvider>,
);
expect(container).toBeTruthy();
//expect(container).toBeInTheDocument();
});

View File

@ -1,44 +0,0 @@
import React from 'react';
import { act, render, cleanup } from '@testing-library/react';
import firebaseMock from 'gatsby-plugin-firebase';
import { UserProvider } from '../../../contexts/UserContext';
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
import { ResumeProvider } from '../../../contexts/ResumeContext';
import { StorageProvider } from '../../../contexts/StorageContext';
import Builder from '../builder';
beforeEach(() => {
firebaseMock.auth().__init();
firebaseMock.database().__init();
});
afterEach(cleanup);
it('renders correctly', async () => {
firebaseMock.database().__useDemoResume(true);
const resume = firebaseMock.database().__getResume();
const element = (
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>
);
let container = null;
act(() => {
container = render(element);
});
await firebaseMock.auth().signInAnonymously();
expect(container).toBeTruthy();
});

View File

@ -0,0 +1,91 @@
import React from 'react';
import { act, cleanup, render, screen } from '@testing-library/react';
import firebaseMock from 'gatsby-plugin-firebase';
import { UserProvider } from '../../../contexts/UserContext';
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
import { ResumeProvider } from '../../../contexts/ResumeContext';
import { StorageProvider } from '../../../contexts/StorageContext';
import Builder from '../builder';
let resume = null;
beforeEach(() => {
firebaseMock.auth().__init();
firebaseMock.database().__init();
});
afterEach(cleanup);
describe('builder', () => {
describe('with demo resume', () => {
beforeEach(async () => {
firebaseMock.database().__useDemoResume(true);
resume = firebaseMock.database().__getResume();
render(
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>,
);
await act(async () => {
await firebaseMock.auth().signInAnonymously();
});
});
it('renders first and last name', async () => {
expect(
screen.getByLabelText(new RegExp('first name', 'i')),
).toHaveDisplayValue(resume.profile.firstName);
expect(
screen.getByLabelText(new RegExp('last name', 'i')),
).toHaveDisplayValue(resume.profile.lastName);
expect(
screen.getAllByText(new RegExp(resume.profile.firstName, 'i')).length,
).toBeTruthy();
expect(
screen.getAllByText(new RegExp(resume.profile.lastName, 'i')).length,
).toBeTruthy();
});
});
describe('with empty resume', () => {
beforeEach(async () => {
firebaseMock.database().__useDemoResume(false);
resume = firebaseMock.database().__getResume();
render(
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>,
);
await act(async () => {
await firebaseMock.auth().signInAnonymously();
});
});
it('renders empty first and last name', async () => {
expect(
screen.getByLabelText(new RegExp('first name', 'i')),
).not.toHaveDisplayValue();
expect(
screen.getByLabelText(new RegExp('last name', 'i')),
).not.toHaveDisplayValue();
});
});
});