From f4082fb03fbc577aa0bb2fd49ce835536822e8d4 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 14 Jan 2022 16:30:24 +0100 Subject: [PATCH] add wait for component to paint to tests --- .../Ecogesture/EcogestureCard.spec.tsx | 18 +++---- .../Ecogesture/EcogestureList.spec.tsx | 4 +- .../Ecogesture/EcogestureView.spec.tsx | 38 +++++--------- .../Ecogesture/SingleEcogesture.spec.tsx | 51 +++++++------------ .../EcogestureCard.spec.tsx.snap | 1 - .../EcogestureList.spec.tsx.snap | 1 - .../SingleEcogesture.spec.tsx.snap | 1 - 7 files changed, 39 insertions(+), 75 deletions(-) diff --git a/src/components/Ecogesture/EcogestureCard.spec.tsx b/src/components/Ecogesture/EcogestureCard.spec.tsx index 247154e7d..3146ddbdb 100644 --- a/src/components/Ecogesture/EcogestureCard.spec.tsx +++ b/src/components/Ecogesture/EcogestureCard.spec.tsx @@ -8,7 +8,7 @@ import configureStore from 'redux-mock-store' import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock' import { Provider } from 'react-redux' import { BrowserRouter } from 'react-router-dom' -import { act } from 'react-dom/test-utils' +import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -44,14 +44,12 @@ describe('EcogestureCard component', () => { const wrapper = mount( <Provider store={store}> <BrowserRouter> - <EcogestureCard ecogesture={ecogesturesData[0]} currentTab={1} /> + <EcogestureCard ecogesture={ecogesturesData[0]} /> </BrowserRouter> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(toJson(wrapper)).toMatchSnapshot() }) it('should be with default icon', async () => { @@ -64,14 +62,12 @@ describe('EcogestureCard component', () => { const wrapper = mount( <Provider store={store}> <BrowserRouter> - <EcogestureCard ecogesture={ecogesturesData[0]} currentTab={1} /> + <EcogestureCard ecogesture={ecogesturesData[0]} /> </BrowserRouter> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find('.Icon').exists()).toBeTruthy() }) }) diff --git a/src/components/Ecogesture/EcogestureList.spec.tsx b/src/components/Ecogesture/EcogestureList.spec.tsx index ba858ab86..58cc26495 100644 --- a/src/components/Ecogesture/EcogestureList.spec.tsx +++ b/src/components/Ecogesture/EcogestureList.spec.tsx @@ -35,7 +35,7 @@ describe('EcogesturesList component', () => { const wrapper = mount( <Provider store={store}> <BrowserRouter> - <EcogestureList currentTab={2} list={ecogesturesData} /> + <EcogestureList list={ecogesturesData} /> </BrowserRouter> </Provider> ) @@ -52,7 +52,7 @@ describe('EcogesturesList component', () => { const wrapper = mount( <Provider store={store}> <BrowserRouter> - <EcogestureList currentTab={2} list={ecogesturesData} /> + <EcogestureList list={ecogesturesData} /> </BrowserRouter> </Provider> ) diff --git a/src/components/Ecogesture/EcogestureView.spec.tsx b/src/components/Ecogesture/EcogestureView.spec.tsx index 540542538..96898cfc9 100644 --- a/src/components/Ecogesture/EcogestureView.spec.tsx +++ b/src/components/Ecogesture/EcogestureView.spec.tsx @@ -9,13 +9,13 @@ import { } from '../../../tests/__mocks__/store' import EcogestureView from 'components/Ecogesture/EcogestureView' import { IconButton, Tab } from '@material-ui/core' -import { act } from 'react-dom/test-utils' import toJson from 'enzyme-to-json' import EcogestureInitModal from './EcogestureInitModal' import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock' import { Season } from 'enum/ecogesture.enum' import EcogestureEmptyList from './EcogestureEmptyList' import * as profileActions from 'store/profile/profile.actions' +import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -92,10 +92,8 @@ describe('EcogestureView component', () => { <EcogestureView /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find(Tab).length).toBe(3) expect(toJson(wrapper)).toMatchSnapshot() }) @@ -114,19 +112,15 @@ describe('EcogestureView component', () => { <EcogestureView /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find(EcogestureInitModal).exists()).toBeTruthy() wrapper .find(IconButton) .first() .simulate('click') - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(updateProfileSpy).toHaveBeenCalledWith({ haveSeenEcogestureModal: true, }) @@ -145,10 +139,8 @@ describe('EcogestureView component', () => { <EcogestureView /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find(EcogestureEmptyList).exists()).toBeTruthy() }) it('should change tab', async () => { @@ -164,20 +156,16 @@ describe('EcogestureView component', () => { <EcogestureView /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + wrapper .find(Tab) .first() .simulate('click') mockgetAllEcogestures.mockResolvedValueOnce([]) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find(EcogestureEmptyList).exists()).toBeTruthy() }) }) diff --git a/src/components/Ecogesture/SingleEcogesture.spec.tsx b/src/components/Ecogesture/SingleEcogesture.spec.tsx index 4d3babb77..8f45017fc 100644 --- a/src/components/Ecogesture/SingleEcogesture.spec.tsx +++ b/src/components/Ecogesture/SingleEcogesture.spec.tsx @@ -4,12 +4,11 @@ import { mount } from 'enzyme' import { Provider } from 'react-redux' import SingleEcogesture from 'components/Ecogesture/SingleEcogesture' import toJson from 'enzyme-to-json' -import { act } from 'react-dom/test-utils' import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock' import { ecogesturesData } from '../../../tests/__mocks__/ecogesturesData.mock' import configureStore from 'redux-mock-store' import { globalStateData } from '../../../tests/__mocks__/globalStateData.mock' -import { EcogestureStatus } from 'enum/ecogesture.enum' +import { waitForComponentToPaint } from '../../../tests/__mocks__/testUtils' jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -70,15 +69,13 @@ describe('SingleEcogesture component', () => { <Provider store={store}> <SingleEcogesture match={{ - params: { id: 'ECOGESTURE0001', tab: EcogestureStatus.ALL }, + params: { id: 'ECOGESTURE0001' }, }} /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(toJson(wrapper)).toMatchSnapshot() }) it('should change doing status', async () => { @@ -97,24 +94,19 @@ describe('SingleEcogesture component', () => { <Provider store={store}> <SingleEcogesture match={{ - params: { id: 'ECOGESTURE0001', tab: EcogestureStatus.ALL }, + params: { id: 'ECOGESTURE0001' }, }} /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) wrapper .find('.doing-btn') .first() .simulate('click') - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(mockupdateEcogesture).toHaveBeenCalledWith(updatedEcogesture) }) it('should change objective status', async () => { @@ -134,23 +126,18 @@ describe('SingleEcogesture component', () => { <Provider store={store}> <SingleEcogesture match={{ - params: { id: 'ECOGESTURE0001', tab: EcogestureStatus.ALL }, + params: { id: 'ECOGESTURE0001' }, }} /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + wrapper .find('.objective-btn') .first() .simulate('click') - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) expect(mockupdateEcogesture).toHaveBeenCalledWith(updatedEcogesture) }) it('should toggle more details', async () => { @@ -168,23 +155,19 @@ describe('SingleEcogesture component', () => { <Provider store={store}> <SingleEcogesture match={{ - params: { id: 'ECOGESTURE0001', tab: EcogestureStatus.ALL }, + params: { id: 'ECOGESTURE0001' }, }} /> </Provider> ) - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + wrapper .find('.toggle-text') .first() .simulate('click') - await act(async () => { - await new Promise(resolve => setTimeout(resolve)) - wrapper.update() - }) + await waitForComponentToPaint(wrapper) + expect(wrapper.find('.toggle-text').text()).toBe( 'ecogesture_modal.show_less' ) diff --git a/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap index 40c4853f7..67d64db10 100644 --- a/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap +++ b/src/components/Ecogesture/__snapshots__/EcogestureCard.spec.tsx.snap @@ -37,7 +37,6 @@ exports[`EcogestureCard component should be rendered correctly 1`] = ` } > <EcogestureCard - currentTab={1} ecogesture={ Object { "_id": "ECOGESTURE001", diff --git a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap index 8af326e09..5bd3246ca 100644 --- a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap +++ b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap @@ -37,7 +37,6 @@ exports[`EcogesturesList component should be rendered correctly 1`] = ` } > <EcogestureList - currentTab={2} list={ Array [ Object { diff --git a/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap index 7ff8505b7..52ff63831 100644 --- a/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap +++ b/src/components/Ecogesture/__snapshots__/SingleEcogesture.spec.tsx.snap @@ -18,7 +18,6 @@ exports[`SingleEcogesture component should be rendered correctly 1`] = ` Object { "params": Object { "id": "ECOGESTURE0001", - "tab": 2, }, } } -- GitLab