Guest User

Untitled

a guest
May 8th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.42 KB | None | 0 0
  1. import React from 'react';
  2. import expect from 'expect';
  3. import { shallow, configure } from 'enzyme';
  4. import { createStore } from 'redux';
  5. import moment from 'moment';
  6. import { NewProfilePage } from '../../../src/components/user/NewProfilePage';
  7. import ManageProfile from '../../../src/components/user/ManageProfile';
  8. import defaultState from '../../../src/components/user/defaultState';
  9. import rootReducer from '../../../src/reducers';
  10. import initialState from '../../../src/reducers/initialState';
  11. import { t } from '../../../src/helpers/I18n';
  12. import Adapter from 'enzyme-adapter-react-16';
  13.  
  14. configure({ adapter: new Adapter() });
  15.  
  16. const store = createStore(rootReducer, initialState);
  17.  
  18. describe('User ManageProfile (Through NewProfilePage)', () => {
  19. let props;
  20. let wrapper;
  21. let saveButton;
  22. let NewProfilePageWrapper;
  23.  
  24. beforeEach(() => {
  25. props = {
  26. store: store
  27. };
  28.  
  29. const Component = ManageProfile(NewProfilePage);
  30. const shallowWrapper = shallow(<Component {...props}/>);
  31. wrapper = shallowWrapper.find('ManageProfileComponent').dive();
  32.  
  33. NewProfilePageWrapper = wrapper.find('NewProfilePage').dive();
  34. saveButton = NewProfilePageWrapper.find('FormButton').dive();
  35. });
  36.  
  37. it('should render a heading with the page title', () => {
  38. expect(NewProfilePageWrapper.find('Header').at(0).dive().text()).toBe(t('user.profile.new'));
  39. });
  40.  
  41. it('should display a ErrorBlock component div when errors are found', () => {
  42. saveButton.simulate('click', { preventDefault: () => {} });
  43.  
  44. wrapper.update();
  45. NewProfilePageWrapper = wrapper.find('NewProfilePage').dive();
  46.  
  47. expect(NewProfilePageWrapper.find('ErrorBlock').length).toBe(1);
  48. });
  49.  
  50. it('should throw an error when the passwords don\'t match', () => {
  51. const user = Object.assign({}, defaultState, {
  52. name: 'Rodrigo',
  53. username: 'rodd',
  54. email: 'rodd@vlf.com.br',
  55. password: 'abc123',
  56. passwordConfirmation: '123abc',
  57. termsAgreed: true
  58. });
  59.  
  60. // Simulate user input
  61. NewProfilePageWrapper.find('FormInput[name="name"]').simulate('change', { target: { value: user.name } }, { name: 'name', value: user.name});
  62. NewProfilePageWrapper.find('FormInput[name="email"]').simulate('change', { target: { value: user.email } }, { name: 'email', value: user.email } );
  63. NewProfilePageWrapper.find('FormInput[name="username"]').simulate('change', { target: { value: user.username } }, { name: 'username', value: user.username } );
  64. NewProfilePageWrapper.find('PasswordInput[fieldName="password"]').simulate('change', { target: { value: user.password } }, { name: 'password', value: user.password } );
  65. NewProfilePageWrapper.find('PasswordInput[fieldName="passwordConfirmation"]').simulate('change', {
  66. target: { value: user.passwordConfirmation }
  67. });
  68.  
  69. saveButton.simulate('click', { preventDefault: () => { } });
  70. wrapper.update();
  71.  
  72. NewProfilePageWrapper = wrapper.find('NewProfilePage');
  73.  
  74. expect(NewProfilePageWrapper.props().errors.passwordConfirmation).toBeDefined();
  75. });
  76.  
  77. it('should throw an error when the selected trip date does not correspond to the selected trip status', () => {
  78. const date = moment('2037-10-10');
  79.  
  80. NewProfilePageWrapper.find('FormRadio[name="tripStatus"]').at(1).simulate('change', { target: { checked: 'true' } }, { name: 'tripStatus', value: 'true' });
  81. wrapper.find('NewProfilePage').props().onSelectDate(date);
  82.  
  83. saveButton.simulate('click', { preventDefault: () => { } });
  84. wrapper.update();
  85.  
  86. expect(wrapper.find('NewProfilePage').props().errors.tripDate).toBeDefined();
  87. expect(wrapper.find('NewProfilePage').props().errors.tripDate).toBe(t('validation.user.trip.status_date_mismatch'));
  88. });
  89.  
  90. it('should not throw an error when the selected trip date corresponds to the selected trip status', () => {
  91. const date = moment('2016-10-10');
  92.  
  93. NewProfilePageWrapper.find('FormRadio[name="tripStatus"]').at(1).simulate('change', { target: { checked: 'true' } }, { name: 'tripStatus', value: 'true' });
  94. wrapper.find('NewProfilePage').props().onSelectDate(date);
  95.  
  96. saveButton.simulate('click', { preventDefault: () => { } });
  97. wrapper.update();
  98.  
  99. expect(wrapper.find('NewProfilePage').props().errors.tripDate).toBeUndefined();
  100. });
  101.  
  102. it('should throw an error telling user to select a country when trip status and trip date have been selected but not a country', () => {
  103. const date = moment('2016-09-10');
  104.  
  105. NewProfilePageWrapper.find('FormRadio[name="tripStatus"]').at(1).simulate('change', { target: { checked: 'true' } }, { name: 'tripStatus', value: 'true' });
  106. wrapper.find('NewProfilePage').props().onSelectDate(date);
  107.  
  108. saveButton.simulate('click', { preventDefault: () => { } });
  109. wrapper.update();
  110.  
  111. expect(wrapper.find('NewProfilePage').props().errors.country).toBeDefined();
  112. expect(wrapper.find('NewProfilePage').props().errors.country).toBe(t('validation.user.trip.empty_country'));
  113. });
  114.  
  115. it('should display an error and have state.saving as false if user dont agree to terms', () => {
  116. const user = Object.assign({}, defaultState, {
  117. name: 'Rodrigo',
  118. username: 'rodd',
  119. email: 'rodd@vlf.com.br',
  120. password: 'abc123',
  121. passwordConfirmation: 'abc123',
  122. termsAgreed: false
  123. });
  124.  
  125. const passwordInput = NewProfilePageWrapper.find('PasswordInput').at(0).dive();
  126. const passwordConfirmationInput = NewProfilePageWrapper.find('PasswordInput').at(1).dive();
  127.  
  128. // Simulate user input
  129. NewProfilePageWrapper.find('FormInput[name="name"]').simulate('change', { target: { value: user.name } }, { name: 'name', value: user.name });
  130. NewProfilePageWrapper.find('FormInput[name="email"]').simulate('change', { target: { value: user.email } }, { name: 'email', value: user.email });
  131. NewProfilePageWrapper.find('FormInput[name="username"]').simulate('change', { target: { value: user.username } }, { name: 'username', value: user.username });
  132. passwordInput.simulate('change', { target: { value: user.password } }, { name: 'password', value: user.password });
  133. passwordConfirmationInput.simulate('change',
  134. { target: { value: user.passwordConfirmation } },
  135. { name: 'passwordConfirmation', value: user.passwordConfirmation }
  136. );
  137.  
  138. saveButton.simulate('click', { preventDefault: () => { } });
  139. wrapper.update();
  140.  
  141. NewProfilePageWrapper = wrapper.find('NewProfilePage');
  142.  
  143. expect(Object.keys(NewProfilePageWrapper.props().errors).length).toBe(1);
  144. expect(NewProfilePageWrapper.props().errors.termsAgreed).toBeDefined();
  145. });
  146.  
  147. it('should not have a ErrorBlock component div when form passes', () => {
  148. const user = Object.assign({}, defaultState, {
  149. name: 'Rodrigo',
  150. username: 'rodd',
  151. email: 'rodd@vlf.com.br',
  152. password: 'abc123',
  153. passwordConfirmation: 'abc123',
  154. termsAgreed: true
  155. });
  156.  
  157. const passwordInput = NewProfilePageWrapper.find('PasswordInput').at(0).dive();
  158. const passwordConfirmationInput = NewProfilePageWrapper.find('PasswordInput').at(1).dive();
  159.  
  160. // Simulate user input
  161. NewProfilePageWrapper.find('FormInput[name="name"]').simulate('change', { target: { value: user.name } }, { name: 'name', value: user.name });
  162. NewProfilePageWrapper.find('FormInput[name="email"]').simulate('change', { target: { value: user.email } }, { name: 'email', value: user.email });
  163. NewProfilePageWrapper.find('FormInput[name="username"]').simulate('change', { target: { value: user.username } }, { name: 'username', value: user.username });
  164. passwordInput.simulate('change', { target: { value: user.password } }, { name: 'password', value: user.password });
  165. passwordConfirmationInput.simulate('change',
  166. { target: { value: user.passwordConfirmation } },
  167. { name: 'passwordConfirmation', value: user.passwordConfirmation }
  168. );
  169.  
  170. saveButton.simulate('click', { preventDefault: () => { } });
  171. wrapper.update();
  172.  
  173. NewProfilePageWrapper = wrapper.find('NewProfilePage');
  174.  
  175. expect(NewProfilePageWrapper.find('ErrorBlock').length).toBe(0);
  176. });
  177. });
Add Comment
Please, Sign In to add comment