From d5c21df749699fb90f7f3ab50a99b2731aaf957d Mon Sep 17 00:00:00 2001 From: Thibaud Colas Date: Tue, 27 Mar 2018 22:48:06 +0300 Subject: [PATCH] Add tests for EditorFallback --- .../Draftail/EditorFallback/EditorFallback.js | 1 + .../EditorFallback/EditorFallback.test.js | 145 ++++++++++++++++++ .../__snapshots__/EditorFallback.test.js.snap | 129 ++++++++++++++++ 3 files changed, 275 insertions(+) create mode 100644 client/src/components/Draftail/EditorFallback/EditorFallback.test.js create mode 100644 client/src/components/Draftail/EditorFallback/__snapshots__/EditorFallback.test.js.snap diff --git a/client/src/components/Draftail/EditorFallback/EditorFallback.js b/client/src/components/Draftail/EditorFallback/EditorFallback.js index d1a123741..08e7e30ee 100644 --- a/client/src/components/Draftail/EditorFallback/EditorFallback.js +++ b/client/src/components/Draftail/EditorFallback/EditorFallback.js @@ -138,6 +138,7 @@ class EditorFallback extends PureComponent { EditorFallback.propTypes = { children: PropTypes.node.isRequired, + field: PropTypes.object.isRequired, }; export default EditorFallback; diff --git a/client/src/components/Draftail/EditorFallback/EditorFallback.test.js b/client/src/components/Draftail/EditorFallback/EditorFallback.test.js new file mode 100644 index 000000000..329c945bf --- /dev/null +++ b/client/src/components/Draftail/EditorFallback/EditorFallback.test.js @@ -0,0 +1,145 @@ +import React from 'react'; +import { shallow } from 'enzyme'; + +import EditorFallback from './EditorFallback'; + +describe('EditorFallback', () => { + it('works', () => { + expect( + shallow( + + test + + ) + ).toMatchSnapshot(); + }); + + it('#componentDidCatch', () => { + const field = document.createElement('input'); + field.value = 'test value'; + + const wrapper = shallow( + test + ); + + field.value = 'new test value'; + + const error = new Error('test'); + const info = { componentStack: 'test' }; + + wrapper.instance().componentDidCatch(error, info); + + expect(wrapper.state('error')).toBe(error); + expect(wrapper.state('info')).toBe(info); + expect(field.value).toBe('test value'); + }); + + describe('#error', () => { + it('works', () => { + const wrapper = shallow( + + test + + ); + + wrapper.setState({ + error: new Error('test'), + }); + + expect(wrapper).toMatchSnapshot(); + }); + + it('reload', () => { + const wrapper = shallow( + + test + + ); + + wrapper + .setState({ + error: new Error('test'), + }) + .find('button') + .first() + .simulate('click'); + + expect(wrapper).toMatchSnapshot(); + }); + + it('reload page', () => { + window.location.reload = jest.fn(); + + const wrapper = shallow( + + test + + ); + + wrapper + .setState({ + error: new Error('test'), + reloads: 3, + }) + .find('button') + .first() + .simulate('click'); + + expect(window.location.reload).toHaveBeenCalled(); + }); + + it('#showError', () => { + const wrapper = shallow( + + test + + ); + + const error = new Error('test'); + + error.stack = 'test stack'; + + wrapper + .setState({ + error: error, + info: { componentStack: 'test' }, + }) + .find('button') + .last() + .simulate('click'); + + expect(wrapper).toMatchSnapshot(); + }); + + it('#showContent', () => { + const field = document.createElement('input'); + field.rawContentState = { + entityMap: {}, + blocks: [ + { + key: 'a', + text: 'test', + }, + ], + }; + + const wrapper = shallow( + test + ); + + const error = new Error('test'); + error.stack = 'test stack'; + + wrapper + .setState({ + error: error, + info: { componentStack: 'test' }, + }) + .find('button') + .slice(2, 3) + .simulate('click'); + + expect(wrapper).toMatchSnapshot(); + }); + }); +}); diff --git a/client/src/components/Draftail/EditorFallback/__snapshots__/EditorFallback.test.js.snap b/client/src/components/Draftail/EditorFallback/__snapshots__/EditorFallback.test.js.snap new file mode 100644 index 000000000..f4c31a98e --- /dev/null +++ b/client/src/components/Draftail/EditorFallback/__snapshots__/EditorFallback.test.js.snap @@ -0,0 +1,129 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`EditorFallback #error #showContent 1`] = ` +
+
+ + + +
+
+
+ The editor just crashed. Content has been reset to the last saved version. +
+
+