From 2cffd6e662922358759b8e6e1685268ccdfc17cc Mon Sep 17 00:00:00 2001
From: Bastien DUMONT <bdumont@grandlyon.com>
Date: Tue, 14 Nov 2023 14:30:08 +0000
Subject: [PATCH] test(rtl): profile type

---
 .../ProfileTypeFinished.spec.tsx              | 28 ++++++++-----------
 .../ProfileTypeFormMultiChoice.spec.tsx       | 15 ++++------
 .../ProfileTypeFormNumber.spec.tsx            | 13 ++++-----
 .../ProfileTypeFormNumberSelection.spec.tsx   | 15 ++++------
 .../ProfileTypeFormSingleChoice.spec.tsx      | 15 ++++------
 .../ProfileType/ProfileTypeView.spec.tsx      | 18 ++++++++----
 6 files changed, 47 insertions(+), 57 deletions(-)

diff --git a/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.spec.tsx b/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.spec.tsx
index efaf28189..402a3a0bf 100644
--- a/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.spec.tsx
@@ -1,5 +1,5 @@
-import { Button } from '@material-ui/core'
-import { mount } from 'enzyme'
+import { render, screen } from '@testing-library/react'
+import userEvent from '@testing-library/user-event'
 import React from 'react'
 import { Provider } from 'react-redux'
 import UsageEventService from 'services/usageEvent.service'
@@ -16,40 +16,36 @@ jest.mock('react-router-dom', () => ({
   useNavigate: () => mockedNavigate,
 }))
 
-const mockAddEvent = jest.fn()
 jest.mock('services/usageEvent.service')
-UsageEventService.addEvent = mockAddEvent
+UsageEventService.addEvent = jest.fn()
 
-const mockGetAllProfileTypes = jest.fn()
-const mockDeleteProfileTypes = jest.fn()
 jest.mock('services/profileTypeEntity.service', () => {
   return jest.fn(() => ({
-    getAllProfileTypes: mockGetAllProfileTypes,
-    deleteProfileTypes: mockDeleteProfileTypes,
+    getAllProfileTypes: jest.fn(),
+    deleteProfileTypes: jest.fn(),
   }))
 })
 
 describe('ProfileTypeFinished component', () => {
   const store = createMockEcolyoStore()
-  beforeEach(() => {
-    jest.clearAllMocks()
-  })
 
   it('should be rendered correctly', async () => {
-    const wrapper = mount(
+    const { container } = render(
       <Provider store={store}>
         <ProfileTypeFinished profileType={mockProfileType} />
       </Provider>
     )
-    expect(wrapper.find('profile-type-finished-card')).toBeTruthy()
+    expect(
+      container.getElementsByClassName('profile-type-finished-card')[0]
+    ).toBeInTheDocument()
   })
-  it('should go to ecogesture selection', () => {
-    const wrapper = mount(
+  it('should go to ecogesture selection', async () => {
+    render(
       <Provider store={store}>
         <ProfileTypeFinished profileType={mockProfileType} />
       </Provider>
     )
-    wrapper.find(Button).first().simulate('click')
+    await userEvent.click(screen.getAllByRole('button')[0])
     expect(mockedNavigate).toHaveBeenCalledWith('/ecogesture-selection')
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeFormMultiChoice/ProfileTypeFormMultiChoice.spec.tsx b/src/components/ProfileType/ProfileTypeFormMultiChoice/ProfileTypeFormMultiChoice.spec.tsx
index 4abad2652..7d2c179af 100644
--- a/src/components/ProfileType/ProfileTypeFormMultiChoice/ProfileTypeFormMultiChoice.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormMultiChoice/ProfileTypeFormMultiChoice.spec.tsx
@@ -1,5 +1,5 @@
+import { render, screen } from '@testing-library/react'
 import { ProfileTypeStepForm } from 'enums'
-import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
 import {
@@ -9,25 +9,22 @@ import {
 import { createMockEcolyoStore } from 'tests/__mocks__/store'
 import ProfileTypeFormMultiChoice from './ProfileTypeFormMultiChoice'
 
-const mockHandlePrevious = jest.fn()
-const mockHandleNext = jest.fn()
-
 describe('ProfileTypeFormMultiChoice component', () => {
   const store = createMockEcolyoStore()
 
   it('should be rendered correctly', () => {
-    const wrapper = mount(
+    render(
       <Provider store={store}>
         <ProfileTypeFormMultiChoice
           step={ProfileTypeStepForm.COOKING_FLUID}
           viewedStep={ProfileTypeStepForm.AREA}
           currentProfileType={mockProfileType}
-          answerType={mockProfileTypeAnswers[1]}
-          setNextStep={mockHandlePrevious}
-          setPreviousStep={mockHandleNext}
+          answerType={mockProfileTypeAnswers[8]}
+          setNextStep={jest.fn()}
+          setPreviousStep={jest.fn()}
         />
       </Provider>
     )
-    expect(wrapper.find('input')).toBeTruthy()
+    expect(screen.getAllByRole('checkbox').length).toBeTruthy()
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.spec.tsx b/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.spec.tsx
index f272691bb..a53dad4ba 100644
--- a/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.spec.tsx
@@ -1,5 +1,5 @@
+import { render, screen } from '@testing-library/react'
 import { ProfileTypeStepForm } from 'enums'
-import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
 import {
@@ -9,25 +9,22 @@ import {
 import { createMockEcolyoStore } from 'tests/__mocks__/store'
 import ProfileTypeFormNumber from './ProfileTypeFormNumber'
 
-const mockHandlePrevious = jest.fn()
-const mockHandleNext = jest.fn()
-
 describe('ProfileTypeFormNumber component', () => {
   const store = createMockEcolyoStore()
 
   it('should be rendered correctly', () => {
-    const wrapper = mount(
+    render(
       <Provider store={store}>
         <ProfileTypeFormNumber
           step={ProfileTypeStepForm.COOKING_FLUID}
           viewedStep={ProfileTypeStepForm.AREA}
           currentProfileType={mockProfileType}
           answerType={mockProfileTypeAnswers[1]}
-          setNextStep={mockHandlePrevious}
-          setPreviousStep={mockHandleNext}
+          setNextStep={jest.fn()}
+          setPreviousStep={jest.fn()}
         />
       </Provider>
     )
-    expect(wrapper.find('input')).toBeTruthy()
+    expect(screen.getByRole('spinbutton')).toBeInTheDocument()
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeFormNumberSelection/ProfileTypeFormNumberSelection.spec.tsx b/src/components/ProfileType/ProfileTypeFormNumberSelection/ProfileTypeFormNumberSelection.spec.tsx
index c575f170d..0b4d386c5 100644
--- a/src/components/ProfileType/ProfileTypeFormNumberSelection/ProfileTypeFormNumberSelection.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormNumberSelection/ProfileTypeFormNumberSelection.spec.tsx
@@ -1,5 +1,5 @@
+import { render } from '@testing-library/react'
 import { ProfileTypeStepForm } from 'enums'
-import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
 import {
@@ -9,25 +9,22 @@ import {
 import { createMockEcolyoStore } from 'tests/__mocks__/store'
 import ProfileTypeFormNumberSelection from './ProfileTypeFormNumberSelection'
 
-const mockHandlePrevious = jest.fn()
-const mockHandleNext = jest.fn()
-
 describe('ProfileTypeFormNumberSelection component', () => {
   const store = createMockEcolyoStore()
 
-  it('should be rendered correctly', () => {
-    const wrapper = mount(
+  it('should be rendered correctly', async () => {
+    const { container } = render(
       <Provider store={store}>
         <ProfileTypeFormNumberSelection
           step={ProfileTypeStepForm.COOKING_FLUID}
           viewedStep={ProfileTypeStepForm.AREA}
           currentProfileType={mockProfileType}
           answerType={mockProfileTypeAnswers[3]}
-          setNextStep={mockHandleNext}
-          setPreviousStep={mockHandlePrevious}
+          setNextStep={jest.fn()}
+          setPreviousStep={jest.fn()}
         />
       </Provider>
     )
-    expect(wrapper.find('input')).toBeTruthy()
+    expect(container.getElementsByTagName('input')[0]).toBeInTheDocument()
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeFormSingleChoice/ProfileTypeFormSingleChoice.spec.tsx b/src/components/ProfileType/ProfileTypeFormSingleChoice/ProfileTypeFormSingleChoice.spec.tsx
index 5ee630d39..d0b4859c2 100644
--- a/src/components/ProfileType/ProfileTypeFormSingleChoice/ProfileTypeFormSingleChoice.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeFormSingleChoice/ProfileTypeFormSingleChoice.spec.tsx
@@ -1,5 +1,5 @@
+import { render, screen } from '@testing-library/react'
 import { ProfileTypeStepForm } from 'enums'
-import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
 import {
@@ -9,25 +9,22 @@ import {
 import { createMockEcolyoStore } from 'tests/__mocks__/store'
 import ProfileTypeFormSingleChoice from './ProfileTypeFormSingleChoice'
 
-const mockHandlePrevious = jest.fn()
-const mockHandleNext = jest.fn()
-
 describe('ProfileTypeFormSingleChoice component', () => {
   const store = createMockEcolyoStore()
 
   it('should be rendered correctly', () => {
-    const wrapper = mount(
+    render(
       <Provider store={store}>
         <ProfileTypeFormSingleChoice
           step={ProfileTypeStepForm.COOKING_FLUID}
           viewedStep={ProfileTypeStepForm.AREA}
           currentProfileType={mockProfileType}
-          answerType={mockProfileTypeAnswers[1]}
-          setNextStep={mockHandleNext}
-          setPreviousStep={mockHandlePrevious}
+          answerType={mockProfileTypeAnswers[3]}
+          setNextStep={jest.fn()}
+          setPreviousStep={jest.fn()}
         />
       </Provider>
     )
-    expect(wrapper.find('input')).toBeTruthy()
+    expect(screen.getAllByRole('radio').length).toBeTruthy()
   })
 })
diff --git a/src/components/ProfileType/ProfileTypeView.spec.tsx b/src/components/ProfileType/ProfileTypeView.spec.tsx
index a2192fa89..c9bc054f9 100644
--- a/src/components/ProfileType/ProfileTypeView.spec.tsx
+++ b/src/components/ProfileType/ProfileTypeView.spec.tsx
@@ -1,5 +1,5 @@
+import { render } from '@testing-library/react'
 import ProfileTypeView from 'components/ProfileType/ProfileTypeView'
-import { mount } from 'enzyme'
 import React from 'react'
 import { Provider } from 'react-redux'
 import { createMockEcolyoStore } from 'tests/__mocks__/store'
@@ -12,14 +12,20 @@ describe('ProfileTypeView component', () => {
   const store = createMockEcolyoStore()
 
   it('should be rendered correctly', () => {
-    const wrapper = mount(
+    const { container } = render(
       <Provider store={store}>
         <ProfileTypeView />
       </Provider>
     )
-    expect(wrapper.find('mock-cozybar').exists()).toBeTruthy()
-    expect(wrapper.find('mock-header').exists()).toBeTruthy()
-    expect(wrapper.find('mock-content').exists()).toBeTruthy()
-    expect(wrapper.find('.profile-type-container').exists()).toBeTruthy()
+    expect(
+      container.getElementsByTagName('mock-cozybar')[0]
+    ).toBeInTheDocument()
+    expect(container.getElementsByTagName('mock-header')[0]).toBeInTheDocument()
+    expect(
+      container.getElementsByTagName('mock-content')[0]
+    ).toBeInTheDocument()
+    expect(
+      container.getElementsByClassName('profile-type-container')[0]
+    ).toBeInTheDocument()
   })
 })
-- 
GitLab