2016-12-13 15:24:58 +00:00
|
|
|
import React from 'react';
|
|
|
|
|
import { mount } from 'enzyme';
|
|
|
|
|
import { noop } from 'lodash';
|
|
|
|
|
|
|
|
|
|
import UserSettingsForm from 'components/forms/UserSettingsForm';
|
|
|
|
|
import helpers from 'test/helpers';
|
|
|
|
|
|
|
|
|
|
const { fillInFormInput, itBehavesLikeAFormInputElement } = helpers;
|
|
|
|
|
|
|
|
|
|
describe('UserSettingsForm - component', () => {
|
2017-02-13 23:19:00 +00:00
|
|
|
const defaultProps = {
|
|
|
|
|
handleSubmit: noop,
|
|
|
|
|
onCancel: noop,
|
|
|
|
|
};
|
|
|
|
|
|
2016-12-13 15:24:58 +00:00
|
|
|
it('has the correct fields', () => {
|
2017-02-13 23:19:00 +00:00
|
|
|
const form = mount(<UserSettingsForm {...defaultProps} />);
|
2016-12-13 15:24:58 +00:00
|
|
|
|
|
|
|
|
itBehavesLikeAFormInputElement(form, 'email');
|
|
|
|
|
itBehavesLikeAFormInputElement(form, 'name');
|
|
|
|
|
itBehavesLikeAFormInputElement(form, 'username');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('calls the handleSubmit props with form data', () => {
|
2020-12-01 18:15:12 +00:00
|
|
|
const handleSubmitSpy = jest.fn();
|
2017-02-13 23:19:00 +00:00
|
|
|
const props = { ...defaultProps, handleSubmit: handleSubmitSpy };
|
|
|
|
|
const form = mount(<UserSettingsForm {...props} />);
|
2016-12-13 15:24:58 +00:00
|
|
|
const expectedFormData = { email: 'email@example.com', name: 'Jim Example', username: 'jimmyexamples' };
|
|
|
|
|
const emailInput = form.find({ name: 'email' }).find('input');
|
|
|
|
|
const nameInput = form.find({ name: 'name' }).find('input');
|
|
|
|
|
const usernameInput = form.find({ name: 'username' }).find('input');
|
|
|
|
|
|
|
|
|
|
fillInFormInput(emailInput, expectedFormData.email);
|
|
|
|
|
fillInFormInput(nameInput, expectedFormData.name);
|
|
|
|
|
fillInFormInput(usernameInput, expectedFormData.username);
|
|
|
|
|
|
2017-01-06 00:01:17 +00:00
|
|
|
form.find('form').simulate('submit');
|
2016-12-13 15:24:58 +00:00
|
|
|
|
|
|
|
|
expect(handleSubmitSpy).toHaveBeenCalledWith(expectedFormData);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('initializes the form with the users data', () => {
|
|
|
|
|
const user = { email: 'email@example.com', name: 'Jim Example', username: 'jimmyexamples' };
|
2017-02-13 23:19:00 +00:00
|
|
|
const props = { ...defaultProps, formData: user };
|
|
|
|
|
const form = mount(<UserSettingsForm {...props} />);
|
2016-12-13 15:24:58 +00:00
|
|
|
|
|
|
|
|
expect(form.state().formData).toEqual(user);
|
|
|
|
|
});
|
|
|
|
|
});
|