backtastic 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/example/app/assets/javascripts/backbone/routers/people_router.coffee +3 -1
- data/example/app/models/person.rb +1 -1
- data/example/config/initializers/jasminerice_runner.rb +1 -0
- data/example/spec/javascripts/models/person_spec.coffee +7 -2
- data/example/spec/javascripts/views/text_field_view_spec.coffee +18 -1
- data/lib/assets/javascripts/util/validation.coffee +7 -4
- data/lib/assets/javascripts/views/form_field_view.coffee +2 -1
- data/lib/backtastic/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- metadata +26 -17
@@ -3,7 +3,9 @@ class Example.Routers.PeopleRouter extends Backbone.Router
|
|
3
3
|
super
|
4
4
|
@people = new Example.Collections.PeopleCollection(peopleJson)
|
5
5
|
@occupations = new Example.Collections.OccupationsCollection(occupationsJson)
|
6
|
-
@people.on "sync",
|
6
|
+
@people.on "sync", @showPeople, @
|
7
|
+
@people.off null, null, @
|
8
|
+
=> @navigate "people/list", trigger: true
|
7
9
|
@peopleView = new Example.Views.PeopleView(collection: @people, el: $("#people_view"))
|
8
10
|
@editPersonView = new Example.Views.EditPersonView(el: $("#edit_person"), occupations: @occupations)
|
9
11
|
@showPeople()
|
@@ -0,0 +1 @@
|
|
1
|
+
Jasminerice::Runner.capybara_driver = :webkit
|
@@ -9,12 +9,17 @@ describe "Person", ->
|
|
9
9
|
describe "failing validation", ->
|
10
10
|
beforeEach ->
|
11
11
|
@person.set first_name: "", last_name: "NotJones"
|
12
|
-
it "should not be valid", ->
|
13
|
-
expect(@person.isValid()).toBeFalsy()
|
14
12
|
it "should have triggered the error event for first name", ->
|
15
13
|
expect(@validationErrors.first_name.length).toEqual 1
|
16
14
|
it "should have triggered the error event for last name", ->
|
17
15
|
expect(@validationErrors.last_name.length).toEqual 1
|
16
|
+
describe "with only one attribute", ->
|
17
|
+
beforeEach ->
|
18
|
+
@person.set last_name: "Jones"
|
19
|
+
it "should only validate attributes that being set", ->
|
20
|
+
expect(@person.isValid()).toBeTruthy()
|
21
|
+
it "should have set the last name", ->
|
22
|
+
expect(@person.get("last_name")).toEqual "Jones"
|
18
23
|
describe "with valid attributes", ->
|
19
24
|
beforeEach ->
|
20
25
|
@person.set first_name: "Fred", last_name: "Jones"
|
@@ -11,7 +11,24 @@ describe "text field view", ->
|
|
11
11
|
parentView: new Example.Views.FormView
|
12
12
|
@textFieldView.render()
|
13
13
|
it "renders has a value", ->
|
14
|
-
expect(@textFieldView.$("input[name=name]").val()).toEqual "bob"
|
14
|
+
expect(@textFieldView.$("input[name=name]").val()).toEqual "bob"
|
15
15
|
it "puts a label on it", ->
|
16
16
|
expect(@textFieldView.$("label[for=name]")).toExist()
|
17
17
|
expect(@textFieldView.$("label[for=name]")).toHaveText /Name/
|
18
|
+
|
19
|
+
describe "displaying errors", ->
|
20
|
+
beforeEach ->
|
21
|
+
@textFieldView.displayErrors
|
22
|
+
name: ["totally borked"]
|
23
|
+
it "should add the error class", ->
|
24
|
+
expect(@textFieldView.$el).toHaveClass "error"
|
25
|
+
it "should add the error message", ->
|
26
|
+
expect(@textFieldView.$("span.help-inline")).toHaveText "totally borked"
|
27
|
+
describe "again", ->
|
28
|
+
beforeEach ->
|
29
|
+
@textFieldView.displayErrors
|
30
|
+
name: ["totally borked"]
|
31
|
+
it "should only display it once", ->
|
32
|
+
expect(@textFieldView.$("span.help-inline").size()).toEqual 1
|
33
|
+
|
34
|
+
|
@@ -27,13 +27,16 @@ Backtastic.Validation =
|
|
27
27
|
|
28
28
|
clearErrors: -> @errors = {}
|
29
29
|
|
30
|
+
validateAttribute: (attribute, value) ->
|
31
|
+
return unless @constructor.validations[attribute]
|
32
|
+
for validator in @constructor.validations[attribute]
|
33
|
+
error = validator(attribute, value)
|
34
|
+
@addError(attribute, error) if error
|
35
|
+
|
30
36
|
validate: (attributes) ->
|
31
37
|
@clearErrors()
|
32
38
|
return unless @constructor.validations
|
33
|
-
for attr,
|
34
|
-
for validator in validators
|
35
|
-
error = validator(attr, attributes[attr])
|
36
|
-
@addError(attr, error) if error
|
39
|
+
@validateAttribute(attr, value) for attr, value of attributes
|
37
40
|
@errors if _.keys(@errors).length > 0
|
38
41
|
|
39
42
|
Backtastic.include Backbone.Model, Backtastic.Validation
|
@@ -6,7 +6,7 @@ class Backtastic.Views.FormFieldView extends Backtastic.View
|
|
6
6
|
@label = options.label
|
7
7
|
@parentView = options.parentView
|
8
8
|
@parentView.on "rendered", => @afterParentRender()
|
9
|
-
@model.on "error", (model, errors) => @displayErrors(errors)
|
9
|
+
@model.on "error", (model, errors) => @displayErrors(errors)
|
10
10
|
|
11
11
|
afterParentRender: ->
|
12
12
|
@setElement(@parentView.$("[data-view-id=#{@cid}]"))
|
@@ -21,6 +21,7 @@ class Backtastic.Views.FormFieldView extends Backtastic.View
|
|
21
21
|
if errors?[@field]
|
22
22
|
messages = errors[@field]
|
23
23
|
@$el.addClass "error"
|
24
|
+
@$("span.help-inline").remove()
|
24
25
|
@$el.append "<span class='help-inline'>#{message}</span>" for message in messages
|
25
26
|
|
26
27
|
clearErrors: ->
|
data/lib/backtastic/version.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'backtastic'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backtastic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70353452602400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70353452602400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: pry
|
27
|
-
requirement: &
|
27
|
+
requirement: &70353452601920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70353452601920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: haml_coffee_assets
|
38
|
-
requirement: &
|
38
|
+
requirement: &70353452601460 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70353452601460
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rails-backbone
|
49
|
-
requirement: &
|
49
|
+
requirement: &70353452601000 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70353452601000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: inflection-js-rails
|
60
|
-
requirement: &
|
60
|
+
requirement: &70353452600580 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70353452600580
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: twitter-bootstrap-rails
|
71
|
-
requirement: &
|
71
|
+
requirement: &70353452600020 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70353452600020
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: activesupport
|
82
|
-
requirement: &
|
82
|
+
requirement: &70353452598880 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70353452598880
|
91
91
|
description: ! "Create backbone twitter bootstrap form views easily using helpers.
|
92
92
|
Handle and display\n validation failures from rails.\n "
|
93
93
|
email:
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- example/config/environments/test.rb
|
148
148
|
- example/config/initializers/backtrace_silencers.rb
|
149
149
|
- example/config/initializers/inflections.rb
|
150
|
+
- example/config/initializers/jasminerice_runner.rb
|
150
151
|
- example/config/initializers/mime_types.rb
|
151
152
|
- example/config/initializers/secret_token.rb
|
152
153
|
- example/config/initializers/session_store.rb
|
@@ -199,6 +200,7 @@ files:
|
|
199
200
|
- lib/assets/javascripts/views/text_field_view.coffee
|
200
201
|
- lib/backtastic.rb
|
201
202
|
- lib/backtastic/version.rb
|
203
|
+
- spec/spec_helper.rb
|
202
204
|
- vendor/assets/javascripts/bootstrap-datepicker.js
|
203
205
|
- vendor/assets/javascripts/jquery.serializeObject.js.coffee
|
204
206
|
- vendor/assets/stylesheets/datepicker.less
|
@@ -214,16 +216,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
214
216
|
- - ! '>='
|
215
217
|
- !ruby/object:Gem::Version
|
216
218
|
version: '0'
|
219
|
+
segments:
|
220
|
+
- 0
|
221
|
+
hash: -824130021871109077
|
217
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
223
|
none: false
|
219
224
|
requirements:
|
220
225
|
- - ! '>='
|
221
226
|
- !ruby/object:Gem::Version
|
222
227
|
version: '0'
|
228
|
+
segments:
|
229
|
+
- 0
|
230
|
+
hash: -824130021871109077
|
223
231
|
requirements: []
|
224
232
|
rubyforge_project:
|
225
233
|
rubygems_version: 1.8.17
|
226
234
|
signing_key:
|
227
235
|
specification_version: 3
|
228
236
|
summary: Formtastic meets backbone.. ish.
|
229
|
-
test_files:
|
237
|
+
test_files:
|
238
|
+
- spec/spec_helper.rb
|