Newer
Older
import { mount } from 'enzyme'
import toJson from 'enzyme-to-json'
import React from 'react'
import { Provider } from 'react-redux'
import { createMockEcolyoStore } from '../../../tests/__mocks__/store'
import { mockUpToDateTerm } from '../../../tests/__mocks__/termsData.mock'
import TermsView from './TermsView'
jest.mock('cozy-ui/transpiled/react/I18n', () => ({
useI18n: jest.fn(() => ({
t: (str: string) => str,
})),
}))
jest.mock('services/terms.service', () => {
return jest.fn(() => {
return {
createTerm: mockCreateTerm,
const mockedNavigate = jest.fn()
jest.mock('react-router-dom', () => ({
...jest.requireActual('react-router-dom'),
useNavigate: () => mockedNavigate,
}))
const mockUseDispatch = jest.spyOn(reactRedux, 'useDispatch')
const mockUpdateProfile = jest.fn()
jest.mock('services/profile.service', () => {
return jest.fn(() => {
return {
updateProfile: mockUpdateProfile,
}
})
})
describe('TermsView component', () => {
it('should valid checkboxes and valid consent', () => {
mockCreateTerm.mockResolvedValueOnce(mockUpToDateTerm)
const wrapper = mount(
<Provider store={store}>
<TermsView />
</Provider>
)
wrapper
.find('input')
.at(0)
.simulate('change', { target: { checked: true } })
expect(wrapper.find('input').at(0).props().checked).toEqual(true)
wrapper
.find('input')
.at(1)
.simulate('change', { target: { checked: true } })
expect(wrapper.find('input').at(1).props().checked).toEqual(true)
expect(wrapper.find(Button).first().hasClass('disabled')).toBeFalsy()
wrapper.find(Button).first().simulate('click')
expect(mockUseDispatch).toHaveBeenCalledTimes(3)
})
it('should be rendered correctly', () => {
const component = mount(
<Provider store={store}>
<TermsView />
</Provider>
)
expect(toJson(component)).toMatchSnapshot()
it('should be unable to valid consent', async () => {
mockCreateTerm.mockResolvedValueOnce(mockUpToDateTerm)
const wrapper = mount(
<Provider store={store}>
<TermsView />
</Provider>
)
wrapper.find(Button).first().simulate('click')
expect(wrapper.find(Button).first().hasClass('disabled')).toBeTruthy()