diff --git a/src/components/FAQ/FAQContent.tsx b/src/components/FAQ/FAQContent.tsx index f1ddb4af24f1745e220aff355a15c2077003e6c7..b677f3fbb2ca66abbf5aa17dd8e63a8bf46fa4b4 100644 --- a/src/components/FAQ/FAQContent.tsx +++ b/src/components/FAQ/FAQContent.tsx @@ -87,9 +87,7 @@ const FAQContent: React.FC = () => { event: React.ChangeEvent<{}>, isExpanded: boolean ) => { - console.log(panel) setExpandedPanel(isExpanded ? panel : false) - console.log(expandedPanel) } return ( diff --git a/src/components/FAQ/FAQView.spec.tsx b/src/components/FAQ/FAQView.spec.tsx index 4c57462cb9553cde73921845f52d411b83861df8..833fb81390359311698d34179c190ed7d3f9aead 100644 --- a/src/components/FAQ/FAQView.spec.tsx +++ b/src/components/FAQ/FAQView.spec.tsx @@ -6,9 +6,6 @@ import FAQView from 'components/FAQ/FAQView' import FAQContent from 'components/FAQ/FAQContent' import GenericExpansionPanel from 'components/CommonKit/ExpansionPanel/StyledSampleExpansionPanel' -import * as MockRecoil from '../../services/__mocks__/recoil' -import * as Recoil from 'recoil' - jest.mock('cozy-ui/transpiled/react/I18n', () => { return { useI18n: jest.fn(() => { @@ -19,11 +16,8 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => { } }) -const defineHeaderHeight = jest.fn() - describe('FAQView component', () => { it('should render only the parent component', () => { - defineHeaderHeight.mockReturnValue(8) const component = shallow(<FAQView />).getElement() expect(component).toMatchSnapshot() }) diff --git a/src/components/Feedback/FeedbackModal.spec.tsx b/src/components/Feedback/FeedbackModal.spec.tsx index 6117920cf99a11e2922d520c728de46e1ab6e1f4..38a7bb1bd18ad67b9fc73453ee2cd971ba641d0a 100644 --- a/src/components/Feedback/FeedbackModal.spec.tsx +++ b/src/components/Feedback/FeedbackModal.spec.tsx @@ -3,9 +3,31 @@ import React from 'react' import { mount, shallow, ShallowWrapper } from 'enzyme' import FeedbackModal from 'components/Feedback/FeedbackModal' +import MailService from 'services/mail.service' +import StyledButton from 'components/CommonKit/Button/StyledButton' +import mockClient from '../../services/__mocks__/client' +import { useClient } from 'cozy-client' +import Modal from 'components/CommonKit/Modal/Modal' +import StyledIconButton from 'components/CommonKit/IconButton/StyledIconButton' +import { fn } from 'moment' -import * as MockClient from '../../../test/__mocks__/cozy-client' -import * as Client from 'cozy-client' +const mockSendMail = jest.fn() +jest.mock('services/mail.service', () => { + return jest.fn(() => { + return { + SendMail: mockSendMail, + } + }) +}) + +// const mockResetInputs = jest.fn() +// jest.mock('./FeedbackModal', () => { +// return jest.fn(() => { +// return { +// resetInputs: mockResetInputs, +// } +// }) +// }) jest.mock('cozy-ui/transpiled/react/I18n', () => { return { @@ -16,42 +38,82 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => { }), } }) +const client = useClient() +const handleFeedbackModalClose = jest.fn() -const handleFeedbackModalClose = () => { - // setModalState((prev: ModalState) => ({ ...prev, feedbackModal: false })) - console.log(handleFeedbackModalClose) -} - -jest.mock('cozy-client') +//jest.mock('cozy-client') // const { useClient } = (Client as unknown) as typeof MockClient describe('FeedbackModal component', () => { - it('should render only the component', () => { + it('should render the component', () => { const component = shallow( <FeedbackModal open={true} handleCloseClick={handleFeedbackModalClose} /> ).getElement() expect(component).toMatchSnapshot() }) }) -describe('FAQContent', () => { - // let wrapper: - // | any[] - // | ShallowWrapper<any, Readonly<{}>, React.Component<{}, {}, any>> - // const setState = jest.fn() - // const useStateSpy = jest.spyOn(React, 'useState') - // const useStateMock: any = (init: any) => [init, setState] - // useStateSpy.mockImplementation(useStateMock) - // beforeEach(() => { - // wrapper = shallow(<FAQContent />) - // }) - // afterEach(() => { - // jest.clearAllMocks() - // }) - // it('should render all the FAQContent component', async () => { - // wrapper - // .find(GenericExpansionPanel) - // .first() - // .simulate('change', { isExpanded: true }) - // expect(setState).toHaveBeenCalledWith('panel0') - // }) +describe('FeedbackModal functionnalities', () => { + const wrapper = shallow( + <FeedbackModal open={true} handleCloseClick={handleFeedbackModalClose} /> + ) + it('should should send an email to the support', () => { + const expectedMailData = { + mode: 'from', + to: [{ name: 'Support', email: 'ecolyo@grandlyon.com' }], + subject: '[Ecolyo] - Feedbacks - feedback.type_bug', + parts: [ + { + type: 'text/plain', + body: + 'Type: feedback.type_bug\n' + + '\n' + + 'Description:\n' + + 'La description\n' + + '\n' + + 'Email: \n' + + '_______________\n' + + 'Ecolyo\n' + + 'v0.0.0\n' + + '\n' + + 'Location: http://localhost/\n' + + '\n' + + 'Browser:\n' + + 'On null\n' + + 'From null\n' + + 'null\n' + + '\n' + + 'Navigator:\n' + + 'On \n' + + 'From Apple Computer, Inc.\n' + + 'Mozilla/5.0 (win32) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/11.12.0', + }, + ], + } + + wrapper + .find('div.fb-selector-item') + .first() + .simulate('click') + wrapper + .find('#idFeedbackDescription') + .simulate('change', { target: { value: 'La description' } }) + wrapper.find(StyledButton).simulate('click') + + expect(mockSendMail).toHaveBeenCalledWith( + expect.anything(), + expectedMailData + ) + }) + it('should close the modal and reset the inputs', () => { + const mockElement = { style: { overflowY: 'style' } } + jest.spyOn(document, 'querySelector').mockReturnValue(mockElement) + const mockResetInputs = jest.spyOn(FeedbackModal, 'resetInputs') + wrapper + .find(Modal) + .dive() + .find(StyledIconButton) + .simulate('click') + expect(handleFeedbackModalClose).toHaveBeenCalledTimes(1) + //expect(mockResetInputs).toHaveBeenCalledTimes(1) + }) }) diff --git a/src/components/Feedback/FeedbackModal.tsx b/src/components/Feedback/FeedbackModal.tsx index 1206aa07dc288dc63eae8f4bf74e48564aaf9b7a..234448256d76baf93fd78aba7b87fc79c0baca53 100644 --- a/src/components/Feedback/FeedbackModal.tsx +++ b/src/components/Feedback/FeedbackModal.tsx @@ -16,6 +16,7 @@ import OtherOnIcon from 'assets/icons/visu/feedback/other-on.svg' import OtherOffIcon from 'assets/icons/visu/feedback/other-off.svg' import warningIcon from 'assets/icons/ico/warning-yellow.svg' import successIcon from 'assets/icons/visu/data-ok.svg' +import MailService from 'services/mail.service' const FEEDBACK_EMAIL = 'ecolyo@grandlyon.com' const browser = detect() @@ -39,6 +40,7 @@ const FeedbackModal: React.FC<FeedbackModalProps> = ({ const [error, setError] = useState<string>('') const resetInputs = () => { + console.log('resetInputs') setType('bug') setDescription('') setEmail('') @@ -86,8 +88,8 @@ const FeedbackModal: React.FC<FeedbackModalProps> = ({ parts: [{ type: 'text/plain', body: mailContent }], } try { - const jobCollection = client.collection('io.cozy.jobs') - await jobCollection.create('sendmail', mailData) + const mailService = new MailService() + mailService.SendMail(client, mailData) } catch (e) { // eslint-disable-next-line no-console console.error(e) diff --git a/src/components/Feedback/__snapshots__/FeedbackModal.spec.tsx.snap b/src/components/Feedback/__snapshots__/FeedbackModal.spec.tsx.snap index f58e35ae58d1d91c1a020d55d9a0a3d7e817efda..60d1a9ed4267f47ccd8acab6ead973b7ef6deaa8 100644 --- a/src/components/Feedback/__snapshots__/FeedbackModal.spec.tsx.snap +++ b/src/components/Feedback/__snapshots__/FeedbackModal.spec.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`FeedbackModal component should render only the component 1`] = ` +exports[`FeedbackModal component should render the component 1`] = ` <Modal handleCloseClick={[Function]} open={true} diff --git a/test/__mocks__/client.ts b/test/__mocks__/client.ts index 137dd41a3b0717caeb24cbbab2f211932cbaad94..e154f309e24d93ab47d59295348b9ad5602246e4 100644 --- a/test/__mocks__/client.ts +++ b/test/__mocks__/client.ts @@ -11,6 +11,9 @@ const mockClient = ({ getStackClient: jest.fn().mockReturnValue({ fetchJSON: jest.fn(), }), + appMetadata: { + version: '0.0.0', + }, } as unknown) as jest.Mocked<Client> export default mockClient diff --git a/test/__mocks__/cozy-client.ts b/test/__mocks__/cozy-client.ts index 1f08af18536ce928b1ce75095f320d59840bc45a..41b24dfb572fe1b07c576e6400ac1be07890941a 100644 --- a/test/__mocks__/cozy-client.ts +++ b/test/__mocks__/cozy-client.ts @@ -12,6 +12,9 @@ export const useClient = jest.fn(() => { getStackClient: jest.fn().mockReturnValue({ fetchJSON: jest.fn(), }), + appMetadata: { + version: '0.0.0', + }, } })