diff --git a/src/contexts/DatabaseContext.js b/src/contexts/DatabaseContext.js index 23662290..f0b3ab55 100644 --- a/src/contexts/DatabaseContext.js +++ b/src/contexts/DatabaseContext.js @@ -128,4 +128,7 @@ export default DatabaseContext; const memoizedProvider = memo(DatabaseProvider); -export { memoizedProvider as DatabaseProvider }; +export { + memoizedProvider as DatabaseProvider, + DEBOUNCE_WAIT_TIME as DebounceWaitTime, +}; diff --git a/src/pages/app/__tests__/builder.test.js b/src/pages/app/__tests__/builder.test.js index 44069b09..18135564 100644 --- a/src/pages/app/__tests__/builder.test.js +++ b/src/pages/app/__tests__/builder.test.js @@ -11,7 +11,10 @@ import { import FirebaseStub from 'gatsby-plugin-firebase'; import { UserProvider } from '../../../contexts/UserContext'; -import { DatabaseProvider } from '../../../contexts/DatabaseContext'; +import { + DatabaseProvider, + DebounceWaitTime, +} from '../../../contexts/DatabaseContext'; import { ResumeProvider } from '../../../contexts/ResumeContext'; import { StorageProvider } from '../../../contexts/StorageContext'; import Builder from '../builder'; @@ -25,14 +28,20 @@ afterEach(cleanup); describe('builder', () => { let resumeId = null; let resume = null; + let mockUpdateFunction = null; + let container = null; beforeEach(async () => { resumeId = FirebaseStub.database().demoResumeId; resume = ( await FirebaseStub.database().ref(`resumes/${resumeId}`).once('value') ).val(); + mockUpdateFunction = jest.spyOn( + FirebaseStub.database().ref(`resumes/${resumeId}`), + 'update', + ); - render( + container = render( @@ -47,6 +56,11 @@ describe('builder', () => { await act(async () => { await FirebaseStub.auth().signInAnonymously(); }); + + await waitFor(() => expect(mockUpdateFunction).toHaveBeenCalledTimes(1), { + timeout: DebounceWaitTime, + }); + mockUpdateFunction.mockClear(); }); describe('renders', () => { @@ -98,10 +112,6 @@ describe('builder', () => { const input = screen.getByLabelText(new RegExp('address line 1', 'i')); const newInputValue = 'test street 123'; - const mockUpdateFunction = jest.spyOn( - FirebaseStub.database().ref(`resumes/${resumeId}`), - 'update', - ); const now = new Date().getTime(); fireEvent.change(input, { target: { value: newInputValue } }); @@ -109,7 +119,7 @@ describe('builder', () => { expect(input.value).toBe(newInputValue); await waitFor(() => expect(mockUpdateFunction).toHaveBeenCalledTimes(1), { - timeout: 4000, + timeout: DebounceWaitTime, }); const mockUpdateFunctionCallArgument = mockUpdateFunction.mock.calls[0][0];