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

Commit

Permalink
test registerUser trigger called when form has no validation error an…
Browse files Browse the repository at this point in the history
…d user is inserted to database
  • Loading branch information
RusAlex committed Jul 29, 2016
1 parent b130d22 commit 8e9121c
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/components/register.js
Expand Up @@ -98,21 +98,19 @@ export class Register extends React.Component {

submitHandler = (event) => {
event.preventDefault();

const { form, fields } = this.props;

form.forceValidate();
if (!form.isValid()) {
return;
}

const theForm = event.target;
this.props.onRegisterUser(
fields.username.value,
fields.password.value,
fields.email.value,
theForm.firstName.value,
theForm.lastName.value
this.firstName.value,
this.lastName.value
);
};

Expand Down Expand Up @@ -193,11 +191,11 @@ export class Register extends React.Component {
<div className="layout__row">
<div className="layout__row layout__row-double">
<label className="label label-before_input" htmlFor="registerFirstName">First name</label>
<input className="input input-gray input-big input-block" id="registerFirstName" name="firstName" placeholder="Firstname" type="text" onBlur={reset} onChange={this.changeName} />
<input className="input input-gray input-big input-block" id="registerFirstName" name="firstName" placeholder="Firstname" type="text" onBlur={reset} onChange={this.changeName} ref={(c) => this.firstName = c} />
</div>
<div className="layout__row layout__row-double">
<label className="label label-before_input" htmlFor="registerLastName">Last name</label>
<input className="input input-gray input-big input-block" id="registerLastName" name="lastName" placeholder="Lastname" type="text" onBlur={reset} onChange={this.changeName} />
<input className="input input-gray input-big input-block" id="registerLastName" name="lastName" placeholder="Lastname" type="text" onBlur={reset} onChange={this.changeName} ref={(c) => this.lastName = c} />
</div>
<div className="layout__row layout__row-double">
<label className="label label-before_input" htmlFor="username">Username</label>
Expand Down Expand Up @@ -235,7 +233,7 @@ export class Register extends React.Component {
<div className="layout__grid layout__grid-big layout-align_vertical">
<button className="button button-big button-green">Sign up</button>
<label className="action checkbox">
<input name="agree" required="required" type="checkbox" {...fields.agree} />
<input id="registerAgree" name="agree" required="required" type="checkbox" {...fields.agree} />
<span className="checkbox__label-right">I agree to Terms &amp; Conditions</span>
</label>
</div>
Expand Down
29 changes: 29 additions & 0 deletions test/integration/pages/auth.js
Expand Up @@ -51,6 +51,7 @@ describe('Auth page', () => {

after(async () => {
await user.destroy();
await bookshelf.knex.raw('DELETE FROM users;');
});

it('Login component should work', async (done) => {
Expand Down Expand Up @@ -131,8 +132,36 @@ describe('Auth page', () => {

setTimeout(() => {
expect(wrapper.state().errors.email, 'to equal', 'Email is taken');

done();
}, 100);
});

it('Should call "registerUser" trigger with no validation error', (done) => {
const username = 'test2';
const testComponent = (
<WrappedRegister
onRegisterUser={triggers.registerUser}
onShowRegisterForm={() => {}}
/>
);
const wrapper = mount(testComponent);

wrapper.find('#username').simulate('change', { target: { value: username } });
wrapper.find('#registerPassword').simulate('change', { target: { value: 'test2password' } });
wrapper.find('#registerPasswordRepeat').simulate('change', { target: { value: 'test2password' } });
wrapper.find('#registerEmail').simulate('change', { target: { value: 'test2@example.com' } });
wrapper.find('#registerAgree').simulate('change', { target: { value: true } });

setTimeout(async () => {
wrapper.find('#registerForm').simulate('submit');

setTimeout(async () => {
expect(await User.where({ username }).fetch({ require: true }), 'not to be empty');

done();
}, 100);
}, 100);
});
});
});

0 comments on commit 8e9121c

Please sign in to comment.