Commit 0fa9222d
Changed files (3)
app
assets
javascripts
models
views
sessions
spec
javascripts
models
app/assets/javascripts/models/session.js.coffee
@@ -1,4 +1,5 @@
class CakeSide.Models.Session extends Backbone.Model
+ EMAIL_REGEX=/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/
modelKey: 'session'
defaults:
username: null
@@ -9,6 +10,9 @@ class CakeSide.Models.Session extends Backbone.Model
validate: (attributes, options) ->
errors = {}
+ if !EMAIL_REGEX.test(attributes.username)
+ errors['username'] = @errorFor('username', 'invalid')
+
_.each @requiredFields, (field) =>
if _.isEmpty(attributes[field])
errors[field] = @errorFor(field, 'blank')
app/assets/javascripts/views/sessions/login_form.js.coffee
@@ -8,6 +8,7 @@ class CakeSide.Views.LoginForm extends CakeSide.AutoView
'keyup #session_password': 'onKeyUp'
'submit form': 'onSubmit'
+
initialize: () ->
@model = new CakeSide.Models.Session()
spec/javascripts/models/session_spec.js.coffee
@@ -10,6 +10,13 @@ describe "CakeSide.Models.Session", ->
expect(subject.isValid()).toEqual(false)
expect(subject.validationError['username']).toEqual(expectedError)
+ it "is invalid, when the email is not a valid email addrees", ->
+ subject.set('username', 'blah')
+ expectedError = "Email is invalid"
+
+ expect(subject.isValid()).toEqual(false)
+ expect(subject.validationError['username']).toEqual(expectedError)
+
it "is invalid, when the password is missing", ->
expectedError = "Password can't be blank"
@@ -17,7 +24,7 @@ describe "CakeSide.Models.Session", ->
expect(subject.validationError['password']).toEqual(expectedError)
it "is valid", ->
- subject.set('username', 'x@example.com')
+ subject.set('username', 'test@example.com')
subject.set('password', 'password')
expect(subject.isValid()).toEqual(true)
expect(subject.validationError).toEqual(null)