Advertisement
Guest User

Untitled

a guest
Jan 10th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. import UserEditForm, {UserInnerEditForm} from '../UserEditForm';
  2. import {mount} from 'enzyme';
  3.  
  4. import {MemoryRouter} from 'react-router-dom';
  5. import {Provider} from 'react-redux';
  6. import React from 'react';
  7. import {browserHistory} from 'react-router-dom';
  8. import configureStore from 'configureStore';
  9.  
  10. jest.mock('../../PoliciesSelect/PoliciesSelect');
  11.  
  12. const values = {
  13. id: '6692',
  14. email: 'aurelie.martin@alinto.biz',
  15. firstname: 'Aurélie',
  16. lastname: 'Martin',
  17. status: 'ENABLED',
  18. language: null,
  19. password: '',
  20. domainId: '10',
  21. policyId: '29',
  22. platform: {id: '1', name: 'alinto'},
  23. policy: {id: '1', quarantine: true, retention: false, archive: false},
  24. platformId: '1',
  25. senderVerifyOn: true,
  26. };
  27. const initialValues = {
  28. platformId: values.platform.id,
  29. };
  30. const noop = jest.fn();
  31. const deleteUserPromise = jest.fn();
  32. const passwordRules = {
  33. count: 8,
  34. digi: 1,
  35. lowercase: 1,
  36. uppercase: 1,
  37. };
  38.  
  39. describe('<UserEditForm /> with Formik', () => {
  40. let store;
  41.  
  42. beforeAll(() => {
  43. store = configureStore({}, browserHistory);
  44. store.dispatch = jest.fn();
  45. });
  46.  
  47. it('should validate form with success', () => {
  48. const div = document.createElement('div');
  49. document.body.appendChild(div);
  50. let patchUserPromise = jest
  51. .fn()
  52. .mockImplementation((value) => Promise.resolve(value));
  53. let fetchUserPromise = jest
  54. .fn()
  55. .mockImplementation((value) => Promise.resolve(value));
  56. const renderedComponent = mount(
  57. <Provider store={store}>
  58. <MemoryRouter>
  59. <UserEditForm
  60. user={values}
  61. patchUserPromise={patchUserPromise}
  62. fetchUserPromise={fetchUserPromise}
  63. currentDomain={{name: 'alinto.net', id: 6}}
  64. deleteUserPromise={deleteUserPromise}
  65. setFieldError={jest.fn()}
  66. setFieldValue={jest.fn()}
  67. initialValues={initialValues}
  68. />
  69. </MemoryRouter>
  70. </Provider>,
  71. {attachTo: div},
  72. );
  73. let input = renderedComponent.find('input#firstname');
  74. expect(input.length).toBe(1);
  75. expect(input.props().value).toBe(values.firstname);
  76. input.simulate('change', {
  77. persist: noop,
  78. target: {
  79. id: 'firstname',
  80. value: 'Jean',
  81. },
  82. });
  83. input.simulate('blur', {
  84. persist: noop,
  85. target: {
  86. id: 'firstname',
  87. },
  88. });
  89.  
  90. return new Promise((resolve) => setImmediate(resolve)).then(() => {
  91. renderedComponent.update();
  92. input = renderedComponent.find('input#firstname');
  93. expect(input.props().value).toBe('Jean');
  94. const Form = renderedComponent.find(UserInnerEditForm);
  95. let err = Form.props().errors;
  96. expect(err.firstname).toBeUndefined();
  97. });
  98. });
  99. //warning unontrolled
  100.  
  101. it('should submit the form with success', () => {
  102. const div = document.createElement('div');
  103. document.body.appendChild(div);
  104. let patchUserPromise = jest
  105. .fn()
  106. .mockImplementation((userId, value) => Promise.resolve(userId, value));
  107. const renderedComponent = mount(
  108. <Provider store={store}>
  109. <MemoryRouter>
  110. <UserEditForm
  111. user={values}
  112. passwordRules={passwordRules}
  113. patchUserPromise={patchUserPromise}
  114. currentDomain={{name: 'alinto.net', id: 6}}
  115. deleteUserPromise={deleteUserPromise}
  116. setFieldError={jest.fn()}
  117. />
  118. </MemoryRouter>
  119. </Provider>,
  120. {attachTo: div},
  121. );
  122. renderedComponent.find('input#firstname').simulate('change', {
  123. persist: noop,
  124. target: {
  125. id: 'firstname',
  126. value: 'toti@alinto.net',
  127. },
  128. });
  129. renderedComponent.find('input#firstname').simulate('blur', {
  130. persist: noop,
  131. target: {
  132. id: 'firstname',
  133. },
  134. });
  135.  
  136. const userInnerform = renderedComponent.find(UserInnerEditForm);
  137. expect(userInnerform.length).toBe(1);
  138. expect(userInnerform.find('form').length).toBe(1);
  139.  
  140. userInnerform.find('form').simulate('submit', jest.fn());
  141.  
  142. return new Promise((resolve) => setImmediate(resolve)).then(() => {
  143. expect(patchUserPromise).toHaveBeenCalled();
  144. });
  145. });
  146.  
  147. it('should submit with failure', () => {
  148. const div = document.createElement('div');
  149. document.body.appendChild(div);
  150. let patchUserPromise = jest
  151. .fn()
  152. .mockImplementation(() => Promise.reject('server error'));
  153. const renderedComponent = mount(
  154. <Provider store={store}>
  155. <MemoryRouter>
  156. <UserEditForm
  157. user={values}
  158. passwordRules={passwordRules}
  159. patchUserPromise={patchUserPromise}
  160. currentDomain={{name: 'alinto.net', id: 6}}
  161. deleteUserPromise={deleteUserPromise}
  162. setFieldError={jest.fn()}
  163. />
  164. </MemoryRouter>
  165. </Provider>,
  166. {attachTo: div},
  167. );
  168. renderedComponent.find('input#firstname').simulate('change', {
  169. persist: noop,
  170. target: {
  171. id: 'firstname',
  172. value: 'toti@alinto.net',
  173. },
  174. });
  175. renderedComponent.find('input#firstname').simulate('blur', {
  176. persist: noop,
  177. target: {
  178. id: 'firstname',
  179. },
  180. });
  181. const preventDefault = jest.fn();
  182. const form = renderedComponent.find(UserInnerEditForm);
  183. form.find('form').simulate('submit', {
  184. preventDefault,
  185. });
  186. return new Promise((resolve) => setImmediate(resolve)).then(() => {
  187. expect(patchUserPromise).toBeCalled();
  188. });
  189. });
  190. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement