UNPKG

@kiwicom/smart-faq

Version:

106 lines (90 loc) 2.96 kB
// @flow import * as React from 'react'; import { render, mount } from 'enzyme'; import { Provider as LogProvider } from '@kiwicom/nitro/lib/services/log/context'; import ScreenAdditionalFeedback from '../ScreenAdditionalFeedback'; import { events } from '../../../../const/events'; import screenList from '../screenList'; jest.mock('../../../../SmartFAQ/mutations/CreateComment'); const articleIds = { valid: 23, feedbackLimitReached: 3039, invalid: -59, }; const changeScreen = jest.fn(); const log = jest.fn(); const COMMENT = 'The article was amazing my dudes'; const SubmitFeedback = id => { const wrapper = mount( <LogProvider value={{ log }}> <ScreenAdditionalFeedback changeScreen={changeScreen} articleId={id} commentType="OTHER" setCommentType={jest.fn()} /> , </LogProvider>, ); wrapper.find('ScreenAdditionalFeedback').setState({ comment: COMMENT }); wrapper.find('form').simulate('submit'); }; describe('ScreenAdditionalFeedback', () => { it('should match snapshot', () => { const wrapper = render( <ScreenAdditionalFeedback changeScreen={jest.fn()} articleId={articleIds.valid} commentType="OTHER" setCommentType={jest.fn()} />, ); expect(wrapper).toMatchSnapshot(); }); it('[On Closing Screen] should go back to the voting screen', () => { const wrapper = mount( <ScreenAdditionalFeedback changeScreen={changeScreen} articleId={articleIds.valid} commentType="OTHER" setCommentType={jest.fn()} />, ); wrapper .find('.close-icon') .first() .simulate('click'); expect(changeScreen).toHaveBeenCalledWith(screenList.VOTING); }); it('[On Succesful Feedback] should log the feedback submit and redirect to thank you screen', done => { SubmitFeedback(articleIds.valid); setImmediate(() => { expect(changeScreen).toHaveBeenCalledWith(screenList.THANK_YOU); expect(log).toHaveBeenCalledWith(events.FAQ_FEEDBACK_SUBMIT, { comment: 'OTHER', commentText: COMMENT, }); done(); }); }); it('[On Comment Limit reached] should log the comment limit reached and redirect to the warning screen', done => { SubmitFeedback(articleIds.feedbackLimitReached); setImmediate(() => { expect(changeScreen).toHaveBeenCalledWith( screenList.COMMENT_LIMIT_REACHED, ); expect(log).toHaveBeenLastCalledWith(events.COMMENT_LIMIT_REACHED, {}); done(); }); }); it('[On Error] should log the error and redirect to the error screen', done => { SubmitFeedback(articleIds.invalid); setImmediate(() => { expect(changeScreen).toHaveBeenCalledWith(screenList.ERROR); expect(log).toHaveBeenLastCalledWith(events.FAQ_FEEDBACK_ERROR, { error: Error('ArticleId should be a positive number'), }); done(); }); }); });