diff --git a/src/pages/app/__tests__/builder.test.js b/src/pages/app/__tests__/builder.test.js index 30908682..44069b09 100644 --- a/src/pages/app/__tests__/builder.test.js +++ b/src/pages/app/__tests__/builder.test.js @@ -8,7 +8,7 @@ import { waitFor, } from '@testing-library/react'; -import firebaseMock from 'gatsby-plugin-firebase'; +import FirebaseStub from 'gatsby-plugin-firebase'; import { UserProvider } from '../../../contexts/UserContext'; import { DatabaseProvider } from '../../../contexts/DatabaseContext'; @@ -17,8 +17,7 @@ import { StorageProvider } from '../../../contexts/StorageContext'; import Builder from '../builder'; beforeEach(() => { - firebaseMock.auth().__init(); - firebaseMock.database().__init(); + FirebaseStub.database().initializeData(); }); afterEach(cleanup); @@ -28,9 +27,9 @@ describe('builder', () => { let resume = null; beforeEach(async () => { - resumeId = firebaseMock.database().__demoResumeId; + resumeId = FirebaseStub.database().demoResumeId; resume = ( - await firebaseMock.database().ref(`resumes/${resumeId}`).once('value') + await FirebaseStub.database().ref(`resumes/${resumeId}`).once('value') ).val(); render( @@ -46,7 +45,7 @@ describe('builder', () => { ); await act(async () => { - await firebaseMock.auth().signInAnonymously(); + await FirebaseStub.auth().signInAnonymously(); }); }); @@ -72,43 +71,53 @@ describe('builder', () => { /* const newInputValue = 'test street 123'; resume.profile.address.line1 = newInputValue; - const ref = firebaseMock.database().ref(`resumes/${resumeId}`); - const firebaseMockUpdateFunction = jest.spyOn(ref, 'update'); - const now = Date.now(); - - await ref.update({ - ...resume, - updatedAt: firebaseMock.database.ServerValue.TIMESTAMP, - }); - - await waitFor(() => - expect(firebaseMockUpdateFunction).toHaveBeenCalledTimes(1), + const mockUpdateFunction = jest.spyOn( + FirebaseStub.database().ref(`resumes/${resumeId}`), + 'update', + ); + const now = new Date().getTime(); + + await FirebaseStub.database() + .ref(`resumes/${resumeId}`) + .update({ + ...resume, + updatedAt: FirebaseStub.database.ServerValue.TIMESTAMP, + }); + + await waitFor(() => expect(mockUpdateFunction).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 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 } }); expect(input.value).toBe(newInputValue); - const databaseRef = firebaseMock.database().ref(`resumes/${resume.id}`); - await waitFor(() => expect(databaseRef.__updateCalls.length).toBe(1), { + await waitFor(() => expect(mockUpdateFunction).toHaveBeenCalledTimes(1), { timeout: 4000, }); - const databaseRefUpdateCallArgument = databaseRef.__updateCalls[0]; - expect(databaseRefUpdateCallArgument.id).toBe(resume.id); - expect(databaseRefUpdateCallArgument.profile.address.line1).toBe( + const mockUpdateFunctionCallArgument = + mockUpdateFunction.mock.calls[0][0]; + expect(mockUpdateFunctionCallArgument.id).toBe(resume.id); + expect(mockUpdateFunctionCallArgument.profile.address.line1).toBe( newInputValue, ); - expect(databaseRefUpdateCallArgument.updatedAt).toBeGreaterThanOrEqual( + expect(mockUpdateFunctionCallArgument.updatedAt).toBeGreaterThanOrEqual( now, ); }); diff --git a/src/pages/app/__tests__/mock.test.js b/src/pages/app/__tests__/mock.test.js deleted file mode 100644 index 3995727f..00000000 --- a/src/pages/app/__tests__/mock.test.js +++ /dev/null @@ -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); - }); -});