Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. import * as React from 'react';
  2. import * as Enzyme from 'enzyme';
  3. import * as EnzymeAdapter from 'enzyme-adapter-react-16';
  4. import axios from 'axios';
  5. import { expect } from 'chai';
  6. import configureStore from 'redux-mock-store';
  7. import { spy, sandbox } from 'sinon';
  8.  
  9. import RegisterPage from '../../../../../../main/webapp/app/modules/account/register/register';
  10.  
  11. describe('RegisterComponent', () => {
  12. describe('RegisterPage', () => {
  13. Enzyme.configure({ adapter: new EnzymeAdapter() });
  14. let mountedWrapper;
  15. let localSandbox;
  16. const mockStore = configureStore();
  17.  
  18. const wrapper = () => {
  19. localSandbox = sandbox.create();
  20. const localeSpy = spy();
  21. const initialState = {};
  22. const store = mockStore(initialState);
  23.  
  24. if (!mountedWrapper) {
  25. mountedWrapper = Enzyme.shallow(
  26. <RegisterPage store={store} onLocaleChange={localeSpy}/>
  27. );
  28. }
  29.  
  30. return mountedWrapper;
  31. };
  32.  
  33. const defaultInput = {
  34. username: 'testUsername',
  35. email: 'test@email.com',
  36. firstPassword: 'pa$$word',
  37. secondPassword: 'pa$$word'
  38. };
  39.  
  40. const fillForm = (wrappedRegister, values = defaultInput) => {
  41. const dive = wrappedRegister.dive();
  42.  
  43. dive.find({ name: 'username' }).simulate('change', { target: { value: values.username } });
  44. dive.find({ name: 'email' }).simulate('change', { target: { value: values.email } });
  45. dive.find({ name: 'firstPassword' }).simulate('change', { target: { value: values.firstPassword } });
  46. dive.find({ name: 'secondPassword' }).simulate('change', { target: { value: values.secondPassword } });
  47. };
  48.  
  49. beforeEach(() => {
  50. mountedWrapper = undefined;
  51. });
  52.  
  53. it('should ensure the two passwords entered match', async () => {
  54. const register = wrapper();
  55. const values = {
  56. ...defaultInput,
  57. secondPassword: 'otherpassword'
  58. };
  59.  
  60. fillForm(register, values);
  61. register.dive().find('#register-submit').simulate('click');
  62.  
  63. // Both should be false since you can't submit an invalid form.
  64. expect(register.props().registrationSuccess).to.be.equals(false);
  65. expect(register.props().registrationFailure).to.be.equals(false);
  66. });
  67.  
  68. it('should update registration success to true after creating an account', async () => {
  69. const register = wrapper();
  70. fillForm(register);
  71. const resolved = new Promise(r => r({ status: 201 }));
  72. localSandbox.stub(axios, 'get').returns(resolved);
  73.  
  74. register.dive().find('#register-submit').simulate('click');
  75.  
  76. expect(register.props().registrationSuccess).to.be.equals(true);
  77. expect(register.props().registrationFailure).to.be.equals(false);
  78. });
  79.  
  80. it('should notify of user existence upon 400/login already in use', () => {
  81. const register = wrapper();
  82. fillForm(register);
  83. const resolved = new Promise(r => r({ status: 400, data: {
  84. 'entityName' : 'userManagement',
  85. 'errorKey' : 'userexists',
  86. 'type' : 'http://www.jhipster.tech/problem/login-already-used',
  87. 'title' : 'Login already in use',
  88. 'status' : 400,
  89. 'message' : 'error.userexists',
  90. 'params' : 'userManagement'
  91. }
  92. }));
  93. localSandbox.stub(axios, 'get').returns(resolved);
  94.  
  95. register.dive().find('#register-submit').simulate('click');
  96.  
  97. expect(register.props().registrationSuccess).to.be.equals(false);
  98. expect(register.props().registrationFailure).to.be.equals(true);
  99. expect(register.props().errorMessage).to.be.equals('userexists');
  100. });
  101.  
  102. it('should notify of email existence upon 400/email address already in use', () => {
  103. const register = wrapper();
  104. fillForm(register);
  105. const resolved = new Promise(r => r({ status: 400, data: {
  106. 'entityName' : 'userManagement',
  107. 'errorKey' : 'emailexists',
  108. 'type' : 'http://www.jhipster.tech/problem/email-already-used',
  109. 'title' : 'Email address already in use',
  110. 'status' : 400,
  111. 'message' : 'error.emailexists',
  112. 'params' : 'userManagement'
  113. }
  114. }));
  115. localSandbox.stub(axios, 'get').returns(resolved);
  116.  
  117. register.dive().find('#register-submit').simulate('click');
  118.  
  119. expect(register.props().registrationSuccess).to.be.equals(false);
  120. expect(register.props().registrationFailure).to.be.equals(true);
  121. expect(register.props().errorMessage).to.be.equals('emailexists');
  122. });
  123.  
  124. it('should notify of generic error', () => {
  125. // Add a sandbox to simulate a generic error.
  126. const register = wrapper();
  127. fillForm(register);
  128. const resolved = new Promise(r => r({ status: 503 }));
  129. sandbox.stub(axios, 'get').returns(resolved);
  130.  
  131. register.dive().find('#register-submit').simulate('click');
  132.  
  133. expect(register.props().registrationSuccess).to.be.equals(false);
  134. expect(register.props().registrationFailure).to.be.equals(true);
  135. expect(register.props().errorMessage).to.be.equals(undefined);
  136. });
  137.  
  138. });
  139. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement