Commit bd64649a
Changed files (6)
app
assets
javascripts
models
config
locales
spec
javascripts
models
app/assets/javascripts/models/session.js.coffee
@@ -0,0 +1,21 @@
+class CakeSide.Models.Session extends Backbone.Model
+ modelKey: 'session'
+ defaults:
+ username: null
+ password: null
+
+ requiredFields: ['username', 'password']
+
+ validate: (attributes, options) ->
+ errors = {}
+
+ _.each @requiredFields, (field) =>
+ if _.isEmpty(attributes[field])
+ errors[field] = @errorFor(field, 'blank')
+
+ return errors if _.keys(errors).length > 0
+
+ errorFor: (attribute, scope) ->
+ attributeName = I18n.t("activerecord.attributes.#{@modelKey}.#{attribute}")
+ error = I18n.t("activerecord.errors.messages.#{scope}")
+ "#{attributeName} #{error}"
app/assets/javascripts/application.js
@@ -10,6 +10,7 @@
//= require underscore
//= require local-time
//= require js-routes
+//= require i18n/translations
//= require backbone
//= require backbone.marionette
//= require backbone_rails_sync
config/locales/en.yml
@@ -20,3 +20,8 @@ en:
sessions: "Sessions"
users: "Users"
profile_saved: Your settings have been updated successfully!
+ activerecord:
+ attributes:
+ session:
+ username: 'Email'
+ password: 'Password'
spec/javascripts/models/session_spec.js.coffee
@@ -0,0 +1,27 @@
+describe "CakeSide.Models.Session", ->
+ subject = null
+
+ beforeEach ->
+ subject = new CakeSide.Models.Session()
+
+ it "is invalid, when the email is missing", ->
+ attributeName = I18n.t("activerecord.attributes.session.username")
+ error = I18n.t("activerecord.errors.messages.blank")
+ expectedError = "#{attributeName} #{error}"
+
+ expect(subject.isValid()).toEqual(false)
+ expect(subject.validationError['username']).toEqual(expectedError)
+
+ it "is invalid, when the password is missing", ->
+ attributeName = I18n.t("activerecord.attributes.session.password")
+ error = I18n.t("activerecord.errors.messages.blank")
+ expectedError = "#{attributeName} #{error}"
+
+ expect(subject.isValid()).toEqual(false)
+ expect(subject.validationError['password']).toEqual(expectedError)
+
+ it "is valid", ->
+ subject.set('username', 'x@example.com')
+ subject.set('password', 'password')
+ expect(subject.isValid()).toEqual(true)
+ expect(subject.validationError).toEqual(null)
Gemfile
@@ -40,6 +40,7 @@ gem 'email_validator'
gem 'font-awesome-rails'
gem 'bootstrap', '4.0.0.beta'
gem 'local_time'
+gem 'i18n-js'
group :development do
gem 'better_errors'
Gemfile.lock
@@ -659,6 +659,8 @@ GEM
rack
socksify
i18n (0.8.6)
+ i18n-js (3.0.1)
+ i18n (~> 0.6, >= 0.6.6)
i18n-tasks (0.9.18)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
@@ -969,6 +971,7 @@ DEPENDENCIES
foreman
geoip
github-markdown
+ i18n-js
i18n-tasks
jbuilder (~> 2.0)
jquery-rails