diff options
| author | mo <mo.khan@gmail.com> | 2017-09-05 19:39:42 -0600 |
|---|---|---|
| committer | mo <mo.khan@gmail.com> | 2017-09-05 19:39:42 -0600 |
| commit | 7cde984301e675b1d75b0fdc2a95ef6cee6561b3 (patch) | |
| tree | 449f663a79cc0c0aba2643f32d4b876b372b3a6b /spec/javascripts | |
| parent | 1e9b754b0997d9a74fccd23752a0a61016c1b173 (diff) | |
validate the login form on the client side.
Diffstat (limited to 'spec/javascripts')
| -rw-r--r-- | spec/javascripts/views/sessions/login_form_spec.js.coffee | 46 | ||||
| -rw-r--r-- | spec/javascripts/views/sessions/login_page_spec.js.coffee | 32 |
2 files changed, 46 insertions, 32 deletions
diff --git a/spec/javascripts/views/sessions/login_form_spec.js.coffee b/spec/javascripts/views/sessions/login_form_spec.js.coffee new file mode 100644 index 00000000..9dbebd27 --- /dev/null +++ b/spec/javascripts/views/sessions/login_form_spec.js.coffee @@ -0,0 +1,46 @@ +describe "CakeSide.Views.LoginForm", -> + subject = null + + beforeEach -> + fixture.set ''' +<div data-autoview="login-form"> + <form class="form-horizontal" data-autoview="login-form" id="new_user_session" action="/sessions" accept-charset="UTF-8" method="post"> + <input name="utf8" type="hidden" value="✓"> + <input type="hidden" name="authenticity_token" value="NUk9vz3sVMzi09PgQrzOTDcJIki2RgCzHgtpFw0ooSha4lgMt/bUsuAk//Wvi7wb/K6qh+pVrDkKr5a5e66QTw=="> + <div class="form-group"> + <input type="email" name="session[username]" id="session_username" value="" placeholder="Email" class="form-control" required="required"> + <div class="invalid-feedback"></div> + </div> + <div class="form-group"> + <input type="password" name="session[password]" id="session_password" value="" placeholder="Password" class="form-control" required="required"> + <div class="invalid-feedback"></div> + </div> + <p><a href="/passwords/new">Forgot your password?</a></p> + <input type="submit" name="commit" value="Sign In" class="btn btn-primary"> + </form> +</div> +''' + + subject = new CakeSide.Views.LoginForm + el: $('[data-autoview=login-form]') + + it "disables the submit button when the email is missing", -> + subject.$('form').submit() + + expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true) + expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual("Email is required") + + it "disables the submit button when the password is missing", -> + subject.field('username').val('user@email.com') + subject.$('form').submit() + + expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true) + expect(subject.field("password").siblings('.invalid-feedback').html()).toEqual("Password is required") + + it "enables the submit button when all required fields are specified", -> + subject.field('username').val('user@email.com').change() + subject.field('password').val('password').change() + + expect(subject.$('input[type=submit]').prop('disabled')).toEqual(false) + expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual('') + expect(subject.field('password').siblings('.invalid-feedback').html()).toEqual('') diff --git a/spec/javascripts/views/sessions/login_page_spec.js.coffee b/spec/javascripts/views/sessions/login_page_spec.js.coffee deleted file mode 100644 index a8e83b17..00000000 --- a/spec/javascripts/views/sessions/login_page_spec.js.coffee +++ /dev/null @@ -1,32 +0,0 @@ -describe "CakeSide.Views.LoginForm", -> - subject = null - - beforeEach -> - fixture.set ''' -<form class="form-horizontal" data-autoview="login-form" id="new_user_session" action="/sessions" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="NUk9vz3sVMzi09PgQrzOTDcJIki2RgCzHgtpFw0ooSha4lgMt/bUsuAk//Wvi7wb/K6qh+pVrDkKr5a5e66QTw=="> - <div class="form-group"> - <input type="email" name="session[username]" id="session_username" value="" placeholder="Email" class="form-control" required="required"> - </div> - <div class="form-group"> - <input type="password" name="session[password]" id="session_password" value="" placeholder="Password" class="form-control" required="required"> - </div> - <p><a href="/passwords/new">Forgot your password?</a></p> - <input type="submit" name="commit" value="Sign In" class="btn btn-primary"> -</form> - ''' - - subject = new CakeSide.Views.LoginForm - el: $('#new_user_session') - - it "disables the submit button when the email is missing", -> - subject.field('password').val('password').change() - expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true) - - it "disables the submit button when the password is missing", -> - subject.field('username').val('user@email.com').change() - expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true) - - it "enables the submit button when all required fields are specified", -> - subject.field('username').val('user@email.com').change() - subject.field('password').val('password').change() - expect(subject.$('input[type=submit]').prop('disabled')).toEqual(false) |
