From 38cad143a0ebdb5a88752aff632cdbad953449d4 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 19 Jan 2020 20:59:01 +0100 Subject: [PATCH] Created EditMetaModal test --- test/short-urls/helpers/EditMetaModal.test.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 test/short-urls/helpers/EditMetaModal.test.js diff --git a/test/short-urls/helpers/EditMetaModal.test.js b/test/short-urls/helpers/EditMetaModal.test.js new file mode 100644 index 00000000..471157fc --- /dev/null +++ b/test/short-urls/helpers/EditMetaModal.test.js @@ -0,0 +1,84 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import { FormGroup, Modal, ModalHeader } from 'reactstrap'; +import each from 'jest-each'; +import EditMetaModal from '../../../src/short-urls/helpers/EditMetaModal'; + +describe('', () => { + let wrapper; + const editShortUrlMeta = jest.fn(() => Promise.resolve()); + const resetShortUrlMeta = jest.fn(); + const toggle = jest.fn(); + const createWrapper = (shortUrl, shortUrlMeta) => { + wrapper = shallow( + + ); + + return wrapper; + }; + + afterEach(() => { + wrapper && wrapper.unmount(); + jest.clearAllMocks(); + }); + + it('properly renders form with components', () => { + const wrapper = createWrapper({}, { saving: false, error: false, meta: {} }); + const error = wrapper.find('.bg-danger'); + const form = wrapper.find('form'); + const formGroup = form.find(FormGroup); + + expect(form).toHaveLength(1); + expect(formGroup).toHaveLength(3); + expect(error).toHaveLength(0); + }); + + each([ + [ true, 'Saving...' ], + [ false, 'Save' ], + ]).it('renders submit button on expected state', (saving, expectedText) => { + const wrapper = createWrapper({}, { saving, error: false, meta: {} }); + const button = wrapper.find('[type="submit"]'); + + expect(button.prop('disabled')).toEqual(saving); + expect(button.text()).toContain(expectedText); + }); + + it('renders error message on error', () => { + const wrapper = createWrapper({}, { saving: false, error: true, meta: {} }); + const error = wrapper.find('.bg-danger'); + + expect(error).toHaveLength(1); + }); + + it('saves meta when form is submit', () => { + const preventDefault = jest.fn(); + const wrapper = createWrapper({}, { saving: false, error: false, meta: {} }); + const form = wrapper.find('form'); + + form.simulate('submit', { preventDefault }); + + expect(preventDefault).toHaveBeenCalled(); + expect(editShortUrlMeta).toHaveBeenCalled(); + }); + + each([ + [ '.btn-link', 'onClick' ], + [ Modal, 'toggle' ], + [ ModalHeader, 'toggle' ], + ]).it('resets meta when modal is toggled in any way', (componentToFind, propToCall) => { + const wrapper = createWrapper({}, { saving: false, error: false, meta: {} }); + const component = wrapper.find(componentToFind); + + component.prop(propToCall)(); + + expect(resetShortUrlMeta).toHaveBeenCalled(); + }); +});