From 8d49edac6af9dd08f1bb7b1727aee36af413a4a2 Mon Sep 17 00:00:00 2001 From: Anike Arni Date: Tue, 28 Mar 2017 18:59:33 -0300 Subject: [#932] Moves form componentes to separate directories with @deniscostadsc --- .../new_password_form/new_password_form.js | 57 ++++++++++++++++++++++ .../new_password_form/new_password_form.scss | 22 +++++++++ .../new_password_form/new_password_form.spec.js | 45 +++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 web-ui/src/account_recovery/new_password_form/new_password_form.js create mode 100644 web-ui/src/account_recovery/new_password_form/new_password_form.scss create mode 100644 web-ui/src/account_recovery/new_password_form/new_password_form.spec.js (limited to 'web-ui/src/account_recovery/new_password_form') diff --git a/web-ui/src/account_recovery/new_password_form/new_password_form.js b/web-ui/src/account_recovery/new_password_form/new_password_form.js new file mode 100644 index 00000000..8fbfb99d --- /dev/null +++ b/web-ui/src/account_recovery/new_password_form/new_password_form.js @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2017 ThoughtWorks, Inc. + * + * Pixelated is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pixelated is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pixelated. If not, see . + */ + +import React from 'react'; +import { translate } from 'react-i18next'; + +import InputField from 'src/common/input_field/input_field'; +import SubmitButton from 'src/common/submit_button/submit_button'; +import BackLink from 'src/common/back_link/back_link'; + +import './new_password_form.scss'; + +export const NewPasswordForm = ({ t, previous }) => ( +
+ {t('account-recovery.new-password.image-description')} +

{t('account-recovery.new-password-form.title')}

+ + + + + +); + +NewPasswordForm.propTypes = { + t: React.PropTypes.func.isRequired, + previous: React.PropTypes.func.isRequired +}; + +export default translate('', { wait: true })(NewPasswordForm); diff --git a/web-ui/src/account_recovery/new_password_form/new_password_form.scss b/web-ui/src/account_recovery/new_password_form/new_password_form.scss new file mode 100644 index 00000000..77623262 --- /dev/null +++ b/web-ui/src/account_recovery/new_password_form/new_password_form.scss @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017 ThoughtWorks, Inc. + * + * Pixelated is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pixelated is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pixelated. If not, see . + */ + +.new-password { + .input-field-group:first-of-type { + margin-bottom: 0; + } +} diff --git a/web-ui/src/account_recovery/new_password_form/new_password_form.spec.js b/web-ui/src/account_recovery/new_password_form/new_password_form.spec.js new file mode 100644 index 00000000..2d326aea --- /dev/null +++ b/web-ui/src/account_recovery/new_password_form/new_password_form.spec.js @@ -0,0 +1,45 @@ +import { shallow } from 'enzyme'; +import expect from 'expect'; +import React from 'react'; +import { NewPasswordForm } from './new_password_form'; + +describe('NewPasswordForm', () => { + let newPasswordForm; + let mockPrevious; + + beforeEach(() => { + const mockTranslations = key => key; + mockPrevious = expect.createSpy(); + newPasswordForm = shallow( + + ); + }); + + it('renders title for new password form', () => { + expect(newPasswordForm.find('h1').text()).toEqual('account-recovery.new-password-form.title'); + }); + + it('renders input for new password', () => { + expect(newPasswordForm.find('InputField').at(0).props().type).toEqual('password'); + expect(newPasswordForm.find('InputField').at(0).props().label).toEqual('account-recovery.new-password-form.input-label1'); + }); + + it('renders input to confirm new password', () => { + expect(newPasswordForm.find('InputField').at(1).props().type).toEqual('password'); + expect(newPasswordForm.find('InputField').at(1).props().label).toEqual('account-recovery.new-password-form.input-label2'); + }); + + it('renders submit button', () => { + expect(newPasswordForm.find('SubmitButton').props().buttonText).toEqual('account-recovery.new-password-form.button'); + }); + + it('returns to previous step on link click', () => { + newPasswordForm.find('BackLink').simulate('click'); + expect(mockPrevious).toHaveBeenCalled(); + }); + + it('returns to previous step on key down', () => { + newPasswordForm.find('BackLink').simulate('keyDown'); + expect(mockPrevious).toHaveBeenCalled(); + }); +}); -- cgit v1.2.3