Updated builder.test to use new FirebaseStub

This commit is contained in:
gianantoniopini
2020-12-23 14:46:10 +01:00
parent fb8dd6d986
commit 30d94fd2a8
2 changed files with 38 additions and 73 deletions

View File

@ -8,7 +8,7 @@ import {
waitFor, waitFor,
} from '@testing-library/react'; } from '@testing-library/react';
import firebaseMock from 'gatsby-plugin-firebase'; import FirebaseStub from 'gatsby-plugin-firebase';
import { UserProvider } from '../../../contexts/UserContext'; import { UserProvider } from '../../../contexts/UserContext';
import { DatabaseProvider } from '../../../contexts/DatabaseContext'; import { DatabaseProvider } from '../../../contexts/DatabaseContext';
@ -17,8 +17,7 @@ import { StorageProvider } from '../../../contexts/StorageContext';
import Builder from '../builder'; import Builder from '../builder';
beforeEach(() => { beforeEach(() => {
firebaseMock.auth().__init(); FirebaseStub.database().initializeData();
firebaseMock.database().__init();
}); });
afterEach(cleanup); afterEach(cleanup);
@ -28,9 +27,9 @@ describe('builder', () => {
let resume = null; let resume = null;
beforeEach(async () => { beforeEach(async () => {
resumeId = firebaseMock.database().__demoResumeId; resumeId = FirebaseStub.database().demoResumeId;
resume = ( resume = (
await firebaseMock.database().ref(`resumes/${resumeId}`).once('value') await FirebaseStub.database().ref(`resumes/${resumeId}`).once('value')
).val(); ).val();
render( render(
@ -46,7 +45,7 @@ describe('builder', () => {
); );
await act(async () => { await act(async () => {
await firebaseMock.auth().signInAnonymously(); await FirebaseStub.auth().signInAnonymously();
}); });
}); });
@ -72,43 +71,53 @@ describe('builder', () => {
/* /*
const newInputValue = 'test street 123'; const newInputValue = 'test street 123';
resume.profile.address.line1 = newInputValue; resume.profile.address.line1 = newInputValue;
const ref = firebaseMock.database().ref(`resumes/${resumeId}`); const mockUpdateFunction = jest.spyOn(
const firebaseMockUpdateFunction = jest.spyOn(ref, 'update'); FirebaseStub.database().ref(`resumes/${resumeId}`),
const now = Date.now(); 'update',
);
const now = new Date().getTime();
await ref.update({ await FirebaseStub.database()
.ref(`resumes/${resumeId}`)
.update({
...resume, ...resume,
updatedAt: firebaseMock.database.ServerValue.TIMESTAMP, updatedAt: FirebaseStub.database.ServerValue.TIMESTAMP,
}); });
await waitFor(() => await waitFor(() => expect(mockUpdateFunction).toHaveBeenCalledTimes(1));
expect(firebaseMockUpdateFunction).toHaveBeenCalledTimes(1), const mockUpdateFunctionCallArgument =
mockUpdateFunction.mock.calls[0][0];
expect(mockUpdateFunctionCallArgument.id).toBe(resume.id);
expect(mockUpdateFunctionCallArgument.profile.address.line1).toBe(
newInputValue,
);
expect(mockUpdateFunctionCallArgument.updatedAt).toBeGreaterThanOrEqual(
now,
); );
const firebaseMockUpdateFunctionCallArgument =
firebaseMockUpdateFunction.mock.calls[0][0];
expect(firebaseMockUpdateFunctionCallArgument.id).toBe(resume.id);
expect(firebaseMockUpdateFunctionCallArgument.profile.address.line1).toBe(newInputValue);
expect(firebaseMockUpdateFunctionCallArgument.updatedAt).toBeGreaterThanOrEqual(now);
*/ */
const input = screen.getByLabelText(new RegExp('address line 1', 'i')); const input = screen.getByLabelText(new RegExp('address line 1', 'i'));
const newInputValue = 'test street 123'; const newInputValue = 'test street 123';
const now = Date.now(); const mockUpdateFunction = jest.spyOn(
FirebaseStub.database().ref(`resumes/${resumeId}`),
'update',
);
const now = new Date().getTime();
fireEvent.change(input, { target: { value: newInputValue } }); fireEvent.change(input, { target: { value: newInputValue } });
expect(input.value).toBe(newInputValue); expect(input.value).toBe(newInputValue);
const databaseRef = firebaseMock.database().ref(`resumes/${resume.id}`); await waitFor(() => expect(mockUpdateFunction).toHaveBeenCalledTimes(1), {
await waitFor(() => expect(databaseRef.__updateCalls.length).toBe(1), {
timeout: 4000, timeout: 4000,
}); });
const databaseRefUpdateCallArgument = databaseRef.__updateCalls[0]; const mockUpdateFunctionCallArgument =
expect(databaseRefUpdateCallArgument.id).toBe(resume.id); mockUpdateFunction.mock.calls[0][0];
expect(databaseRefUpdateCallArgument.profile.address.line1).toBe( expect(mockUpdateFunctionCallArgument.id).toBe(resume.id);
expect(mockUpdateFunctionCallArgument.profile.address.line1).toBe(
newInputValue, newInputValue,
); );
expect(databaseRefUpdateCallArgument.updatedAt).toBeGreaterThanOrEqual( expect(mockUpdateFunctionCallArgument.updatedAt).toBeGreaterThanOrEqual(
now, now,
); );
}); });

View File

@ -1,44 +0,0 @@
import { cleanup, waitFor } from '@testing-library/react';
import FirebaseStub from 'gatsby-plugin-firebase';
beforeEach(() => {
FirebaseStub.database().initializeData();
});
afterEach(cleanup);
describe('builder', () => {
let resumeId = null;
let resume = null;
beforeEach(async () => {
resumeId = FirebaseStub.database().demoResumeId;
resume = (
await FirebaseStub.database().ref(`resumes/${resumeId}`).once('value')
).val();
});
it('test 1', async () => {
const now = new Date().getTime();
const newInputValue = 'test street 123';
resume.profile.address.line1 = newInputValue;
const functionSpy = jest.spyOn(
FirebaseStub.database().ref(`resumes/${resumeId}`),
'update',
);
await FirebaseStub.database()
.ref(`resumes/${resumeId}`)
.update({
...resume,
updatedAt: FirebaseStub.database.ServerValue.TIMESTAMP,
});
await waitFor(() => expect(functionSpy).toHaveBeenCalledTimes(1));
const functionCallArgument = functionSpy.mock.calls[0][0];
expect(functionCallArgument.id).toBe(resume.id);
expect(functionCallArgument.profile.address.line1).toBe(newInputValue);
expect(functionCallArgument.updatedAt).toBeGreaterThanOrEqual(now);
});
});