From cfb89f1e318d046fce1507945ad43ac6a25a1f56 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 24 Oct 2018 21:16:24 -0400 Subject: [PATCH] working commit LoginPage.jsx tests --- __tests__/tests/LoginPage.test.jsx | 49 ++++++++++++++++++++++++++++++ src/pages/Login.jsx | 8 ++--- 2 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 __tests__/tests/LoginPage.test.jsx diff --git a/__tests__/tests/LoginPage.test.jsx b/__tests__/tests/LoginPage.test.jsx new file mode 100644 index 0000000000..cae51ad6b3 --- /dev/null +++ b/__tests__/tests/LoginPage.test.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import { shallow, mount } from 'enzyme'; +import LoginPage from '../../src/pages/Login'; +import api from '../../src/api'; +import Dashboard from '../../src/pages/Dashboard'; + +describe('', () => { + let loginWrapper, usernameInput, passwordInput, errorTextArea, submitButton; + + beforeEach(() => { + loginWrapper = mount(); + usernameInput = loginWrapper.find('.pf-c-form__group#username TextInput'); + passwordInput = loginWrapper.find('.pf-c-form__group#password TextInput'); + errorTextArea = loginWrapper.find('.pf-c-form__helper-text.pf-m-error'); + submitButton = loginWrapper.find('Button[type="submit"]'); + }); + + test('initially renders without crashing', () => { + expect(loginWrapper.length).toBe(1); + expect(usernameInput.length).toBe(1); + expect(passwordInput.length).toBe(1); + expect(errorTextArea.length).toBe(1); + expect(submitButton.length).toBe(1); + }); + + // initially renders empty username and password fields + // as well as state.username and state.password to empty strings + // initially sets state.error and state.loading to false + + // on unmount, unmount is set to true + + // typing into username and password fields (if the component is not unmounting) + // set state.username and state.password, as well as set state.error to empty string + // this is done through the handleUsernameChange and handlePasswordChange functions + // which both call safeSetState + + // when the submit Button is clicked, as long as it is not disabled (through state.loading + // being set tp true), state.loading is set to true (through safeSetState) + // api.login is called with param 1 username and param 2 password based on state + + // if api.login returns an error, the state.error should be set to LOGIN_ERROR_MESSAGE + // if the error object returned has response.status set to 401. + + // regardless of error or not, after api.login returns state.loading should be set to false + // via safeSetState + + // QUESTION: if api.login is valid, how does redirect happen? +}); \ No newline at end of file diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx index a2836c1769..ad0e5a872f 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.jsx @@ -63,9 +63,9 @@ class LoginPage extends Component { const { username, password, loading, error } = this.state; const { logo, loginInfo } = this.props; - if (api.isAuthenticated()) { - return (); - } + // if (api.isAuthenticated()) { + // return (); + // } return ( -
+
>