Commit 91464727
Changed files (3)
app
assets
javascripts
views
sessions
views
sessions
spec
javascripts
views
sessions
app/assets/javascripts/views/sessions/login_form.js.coffee
@@ -8,30 +8,26 @@ class CakeSide.Views.LoginForm extends CakeSide.AutoView
'keyup #session_password': 'onKeyUp'
'submit form': 'onSubmit'
- render: ->
- @hideErrors()
- @$('input[type=submit]').prop('disabled', !@isValid())
- _.each _.keys(@errors), (key) =>
- @showError(@field(key), @errors[key])
-
- isValid: ->
- _.keys(@errors).length == 0
-
- validate: ->
- @errors = {}
- if _.isEmpty(@field("username").val())
- @errors['username'] = "Email is required"
+ initialize: () ->
+ @model = new CakeSide.Models.Session()
- if _.isEmpty(@field("password").val())
- @errors['password'] = "Password is required"
+ render: ->
+ @renderErrors(@model.validationError)
onKeyUp: (event) ->
- @validate()
+ @model.set('username', @field('username').val())
+ @model.set('password', @field('password').val())
+ @$('input[type=submit]').prop('disabled', !@model.isValid())
@render()
onSubmit: (event) ->
- @validate()
- if !@isValid()
+ if !@model.isValid()
+ @$('input[type=submit]').prop('disabled', true)
event.preventDefault()
event.stopPropagation()
@render()
+
+ renderErrors: (errors) ->
+ @hideErrors()
+ _.each _.keys(errors), (key) =>
+ @showError(@field(key), errors[key])
app/views/sessions/new.html.erb
@@ -25,7 +25,7 @@
<div class="col">
<div data-autoview="login-form">
- <%= form_for(@session, url: sessions_path(@session), html: { class: "form-horizontal needs-validation" }) do |f| %>
+ <%= form_for(@session, url: sessions_path(@session), html: { class: "form-horizontal needs-validation", novalidate: :novalidate }) do |f| %>
<legend>Got an account? Login!</legend>
<div class="form-group">
<%= email_field_tag 'session[username]', '', placeholder: 'Email', class: "form-control", required: :required %>
spec/javascripts/views/sessions/login_form_spec.js.coffee
@@ -28,14 +28,14 @@ describe "CakeSide.Views.LoginForm", ->
subject.$('form').submit()
expect(subject.$('input[type=submit]').prop('disabled')).toEqual(true)
- expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual("Email is required")
+ expect(subject.field('username').siblings('.invalid-feedback').html()).toEqual("Email can't be blank")
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")
+ expect(subject.field("password").siblings('.invalid-feedback').html()).toEqual("Password can't be blank")
it "enables the submit button when all required fields are specified", ->
subject.field('username').val('user@email.com').change()