Skip to content
This repository has been archived by the owner on Oct 1, 2019. It is now read-only.

Commit

Permalink
Correct outdated tests
Browse files Browse the repository at this point in the history
  • Loading branch information
artkravchenko committed Jun 23, 2017
1 parent 407a33f commit 2691251
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 23 deletions.
2 changes: 1 addition & 1 deletion src/components/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class SuccessContent extends Component {
}

export class UnwrappedRegister extends React.Component {
static displayName = 'Register';
static displayName = 'UnwrappedRegister';

static propTypes = {
fields: PropTypes.shape({
Expand Down
50 changes: 30 additions & 20 deletions test/integration/components/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
/* eslint-env node, mocha */
/* global $dbConfig,setTimeout */
import React from 'react';
import { Provider } from 'react-redux';
import { mount } from 'enzyme';
import sinon from 'sinon';

import Register from '../../../src/components/register';
import Register, { UnwrappedRegister } from '../../../src/components/register';
import { initState } from '../../../src/store';
import initBookshelf from '../../../src/api/db';
import expect from '../../../test-helpers/expect';
import UserFactory from '../../../test-helpers/factories/user';
Expand Down Expand Up @@ -49,14 +51,18 @@ describe('UnwpappedAuth page', () => {
});

describe('Wrapped Register component', () => {
let userAttrs, user;
let userAttrs, user, store;
const email = 'test@example.com';

before(async () => {
userAttrs = UserFactory.build();
user = await User.create(userAttrs.username, userAttrs.password, email);
});

beforeEach(() => {
store = initState();
});

after(async () => {
await user.destroy();
});
Expand All @@ -82,38 +88,44 @@ describe('UnwpappedAuth page', () => {

it('should check on email currently taken', async () => {
const testComponent = (
<Register
onRegisterUser={noop}
onShowRegisterForm={noop}
/>
<Provider store={store}>
<Register
onRegisterUser={noop}
onShowRegisterForm={noop}
/>
</Provider>
);
const wrapper = mount(testComponent);

const newEmailError = waitForChange(() => wrapper.state().errors.email);
const newEmailError = waitForTrue(() =>
wrapper.find(UnwrappedRegister).props().fields.email.error === 'Email is taken'
);

wrapper.find('#registerEmail').simulate('change', { target: { value: email } });
wrapper.find('#registerForm').simulate('submit');

expect(await newEmailError, 'to equal', 'Email is taken');
expect(await newEmailError, 'to be truthy');
});

it('Register form validation', async () => {
const userAttrs = UserFactory.build();
const onRegisterUser = sinon.spy();
const testComponent = (
<Register
onRegisterUser={onRegisterUser}
onShowRegisterForm={noop}
/>
<Provider store={store}>
<Register
onRegisterUser={onRegisterUser}
onShowRegisterForm={noop}
/>
</Provider>
);

const wrapper = mount(testComponent);
const register = wrapper.find(UnwrappedRegister);

const changeTextInput = async (id, value, name) => {
wrapper.find(id).node.value = value;
wrapper.find(id).simulate('change');
await waitForTrue(() => {
return !wrapper.state().errors[name];
});
await waitForTrue(() => !register.props().fields[name].error);
};

await changeTextInput('#registerUsername', userAttrs.username, 'username');
Expand All @@ -123,13 +135,11 @@ describe('UnwpappedAuth page', () => {

wrapper.find('#registerAgree').node.checked = true;
wrapper.find('#registerAgree').simulate('change');
await waitForTrue(() => {
return !wrapper.state().errors.agree;
});
await waitForTrue(() => !register.props().fields.agree.error);
await waitForTrue(() => register.props().form.isValid());

await waitForTrue(() => wrapper.state().valid);
wrapper.find('#registerForm').simulate('submit');
await waitForTrue(() => wrapper.state().valid);
await waitForTrue(() => register.props().form.isValid());

return expect(onRegisterUser.calledWith(userAttrs.username, userAttrs.password, userAttrs.email, '', ''), 'to be true');
});
Expand Down
4 changes: 2 additions & 2 deletions test/integration/triggers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ describe('ActionsTrigger', () => {
const triggers = new ActionsTrigger(client, store.dispatch);
await triggers.login('nonexisting', 'password');

expect(store.getState().get('messages').first().get('message'), 'to equal', 'Invalid username or password');
expect(store.getState().get('messages').first().get('message'), 'to equal', 'login.errors.invalid');
});

it('should dispatch correct error for user with not validated email', async () => {
Expand All @@ -121,7 +121,7 @@ describe('ActionsTrigger', () => {
const triggers = new ActionsTrigger(client, store.dispatch);
await triggers.login(userAttrs.username, userAttrs.password);

expect(store.getState().get('messages').first().get('message'), 'to equal', 'Please follow the instructions mailed to you during registration.');
expect(store.getState().get('messages').first().get('message'), 'to equal', 'login.errors.email_unchecked');
await user.destroy();
});
});
Expand Down

0 comments on commit 2691251

Please sign in to comment.