diff --git a/src/logistration/tests/LoginHelpLinks.test.jsx b/src/logistration/tests/LoginHelpLinks.test.jsx
new file mode 100644
index 00000000..357f6dc9
--- /dev/null
+++ b/src/logistration/tests/LoginHelpLinks.test.jsx
@@ -0,0 +1,58 @@
+import React from 'react';
+import { IntlProvider } from '@edx/frontend-platform/i18n';
+import { mount } from 'enzyme';
+
+import LoginHelpLinks from '../LoginHelpLinks';
+
+describe('LoginHelpLinks', () => {
+ let props = {};
+ const otherSignInIssues = 'https://support.edx.org/hc/en-us/sections/115004153367-Solve-a-Sign-in-Problem';
+
+ const reduxWrapper = children => (
+
+ {children}
+
+ );
+
+ it('renders help links on button click', () => {
+ props = {
+ ...props,
+ page: 'login',
+ };
+ const loginHelpLinks = mount(reduxWrapper());
+
+ expect(loginHelpLinks.find('.login-help').length).toBe(0);
+ loginHelpLinks.find('button').simulate('click');
+ expect(loginHelpLinks.find('.login-help').length).toBe(1);
+ });
+
+ it('should display login page help links', () => {
+ props = {
+ ...props,
+ page: 'login',
+ };
+
+ const wrapper = mount(reduxWrapper());
+ wrapper.find('button').simulate('click');
+
+ const loginHelpLinks = wrapper.find('a');
+
+ expect(loginHelpLinks.at(0).prop('href')).toEqual('/reset');
+ expect(loginHelpLinks.at(1).prop('href')).toEqual(otherSignInIssues);
+ });
+
+ it('should display forget password page help links', () => {
+ props = {
+ ...props,
+ page: 'forget-password',
+ };
+
+ const wrapper = mount(reduxWrapper());
+ wrapper.find('button').simulate('click');
+
+ const loginHelpLinks = wrapper.find('a');
+
+ expect(loginHelpLinks.at(0).prop('href')).toEqual('/register');
+ expect(loginHelpLinks.at(1).prop('href')).toEqual(otherSignInIssues);
+ });
+});
diff --git a/src/logistration/tests/LoginPage.test.jsx b/src/logistration/tests/LoginPage.test.jsx
index 07050bda..eda4779f 100644
--- a/src/logistration/tests/LoginPage.test.jsx
+++ b/src/logistration/tests/LoginPage.test.jsx
@@ -40,20 +40,51 @@ describe('LoginPage', () => {
expect(tree).toMatchSnapshot();
});
+ it('should match forget password alert message snapshot', () => {
+ props = {
+ ...props,
+ forgotPassword: { status: 'complete', email: 'test@example.com' },
+ };
+ const tree = renderer.create(reduxWrapper()).toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
it('should display login help button', () => {
const root = mount(reduxWrapper());
expect(root.find('button.field-link').text()).toEqual('Need help signing in?');
});
+ it('updates the error state for invalid email', () => {
+ const errorState = { email: null, password: null };
+ const loginPage = mount(reduxWrapper());
+
+ loginPage.find('button.submit').simulate('click');
+ expect(loginPage.find('LoginPage').state('errors')).toEqual(errorState);
+ });
+
+ it('updates the error state for invalid password', () => {
+ const errorState = { email: '', password: null };
+ const loginPage = mount(reduxWrapper());
+
+ loginPage.find('input#loginEmail').simulate('change', { target: { value: 'test@example.com', name: 'email' } });
+ loginPage.find('button.submit').simulate('click');
+ expect(loginPage.find('LoginPage').state('errors')).toEqual(errorState);
+ });
+
it('should match url after redirection', () => {
const dasboardUrl = 'http://test.com/dashboard/';
- props = {
- ...props,
- loginResult: { success: true, redirectUrl: dasboardUrl },
- };
+ store = mockStore({
+ ...store,
+ logistration: {
+ ...store.logistration,
+ loginResult: {
+ success: true,
+ redirectUrl: dasboardUrl,
+ },
+ },
+ });
delete window.location;
window.location = { href: '' };
- window.location.href = dasboardUrl;
renderer.create(reduxWrapper());
expect(window.location.href).toBe(dasboardUrl);
});
diff --git a/src/logistration/tests/__snapshots__/LoginPage.test.jsx.snap b/src/logistration/tests/__snapshots__/LoginPage.test.jsx.snap
index cd413f23..b625ee9d 100644
--- a/src/logistration/tests/__snapshots__/LoginPage.test.jsx.snap
+++ b/src/logistration/tests/__snapshots__/LoginPage.test.jsx.snap
@@ -246,3 +246,250 @@ exports[`LoginPage should match default section snapshot 1`] = `
`;
+
+exports[`LoginPage should match forget password alert message snapshot 1`] = `
+
+
+
+
+
+
+ or sign in with
+
+
+
+
+
+
+
+
+
+`;