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
         |