forminate 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/forminate.gemspec +3 -3
- data/lib/forminate.rb +13 -6
- data/lib/forminate/version.rb +1 -1
- data/spec/forminate/association_definition_spec.rb +1 -1
- data/spec/forminate_spec.rb +48 -14
- metadata +11 -11
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 788144e945686f0d22aca012824b9e9ec934ddc6
         | 
| 4 | 
            +
              data.tar.gz: 2c48c40dfe89785a48a8ad957cfa871e1d7939bd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e6366cdaa910762361b1fd368db1f6a17dbea84c36bc36e661bb86b96152d587f7237d3c77dc522096f17709524e8e435e37a7ec6cb6849880f77c199e9ebac7
         | 
| 7 | 
            +
              data.tar.gz: eda25d9eb9d7f963b2f1b5ede5a01d904086e0625ee0ec061186313c2365d1b81e509238b6c47933d6152aa29a2e46d8765a4f67d914a63cc402d42ac3eae754
         | 
    
        data/forminate.gemspec
    CHANGED
    
    | @@ -23,12 +23,12 @@ Gem::Specification.new do |spec| | |
| 23 23 | 
             
              spec.add_dependency 'client_side_validations', '~> 3.2'
         | 
| 24 24 |  | 
| 25 25 | 
             
              spec.add_development_dependency 'bundler', '~> 1.3'
         | 
| 26 | 
            -
              spec.add_development_dependency 'rake'
         | 
| 26 | 
            +
              spec.add_development_dependency 'rake', '~> 10.1'
         | 
| 27 27 | 
             
              spec.add_development_dependency 'rspec', '~> 2.11'
         | 
| 28 28 | 
             
              spec.add_development_dependency 'activerecord', '~> 3.2'
         | 
| 29 29 | 
             
              if defined?(JRUBY_VERSION)
         | 
| 30 | 
            -
                spec.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
         | 
| 30 | 
            +
                spec.add_development_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
         | 
| 31 31 | 
             
              else
         | 
| 32 | 
            -
                spec.add_development_dependency 'sqlite3'
         | 
| 32 | 
            +
                spec.add_development_dependency 'sqlite3', '~> 1.3'
         | 
| 33 33 | 
             
              end
         | 
| 34 34 | 
             
            end
         | 
    
        data/lib/forminate.rb
    CHANGED
    
    | @@ -79,16 +79,19 @@ module Forminate | |
| 79 79 | 
             
                Hash[association_names.map { |name| [name, send(name)] }]
         | 
| 80 80 | 
             
              end
         | 
| 81 81 |  | 
| 82 | 
            -
              def save
         | 
| 82 | 
            +
              def save!
         | 
| 83 83 | 
             
                return false unless valid?
         | 
| 84 | 
            -
             | 
| 85 84 | 
             
                before_save
         | 
| 86 | 
            -
                 | 
| 87 | 
            -
             | 
| 85 | 
            +
                persist_associations
         | 
| 86 | 
            +
                self
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              def save
         | 
| 90 | 
            +
                if use_transaction?
         | 
| 91 | 
            +
                  ActiveRecord::Base.transaction { save! }
         | 
| 88 92 | 
             
                else
         | 
| 89 | 
            -
                   | 
| 93 | 
            +
                  save!
         | 
| 90 94 | 
             
                end
         | 
| 91 | 
            -
                self
         | 
| 92 95 | 
             
              end
         | 
| 93 96 |  | 
| 94 97 | 
             
              def before_save
         | 
| @@ -153,4 +156,8 @@ module Forminate | |
| 153 156 | 
             
                assoc = send(assoc_name)
         | 
| 154 157 | 
             
                return assoc, assoc_method_name
         | 
| 155 158 | 
             
              end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
              def use_transaction?
         | 
| 161 | 
            +
                defined?(ActiveRecord)
         | 
| 162 | 
            +
              end
         | 
| 156 163 | 
             
            end
         | 
    
        data/lib/forminate/version.rb
    CHANGED
    
    
| @@ -14,7 +14,7 @@ describe Forminate::AssociationDefinition do | |
| 14 14 | 
             
              describe '#validation_condition' do
         | 
| 15 15 | 
             
                context 'options hash does not contain :validate key' do
         | 
| 16 16 | 
             
                  it 'returns true' do
         | 
| 17 | 
            -
                    expect(subject.validation_condition).to  | 
| 17 | 
            +
                    expect(subject.validation_condition).to be true
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
    
        data/spec/forminate_spec.rb
    CHANGED
    
    | @@ -32,7 +32,7 @@ describe Forminate do | |
| 32 32 |  | 
| 33 33 | 
             
              describe '.attributes_for' do
         | 
| 34 34 | 
             
                it 'adds a reader method for each attribute of the associated model' do
         | 
| 35 | 
            -
                  expect(model.respond_to?(:dummy_user_first_name)).to  | 
| 35 | 
            +
                  expect(model.respond_to?(:dummy_user_first_name)).to be true
         | 
| 36 36 | 
             
                end
         | 
| 37 37 |  | 
| 38 38 | 
             
                it 'adds reader and writer methods for each attribute of the associated model' do
         | 
| @@ -52,9 +52,9 @@ describe Forminate do | |
| 52 52 | 
             
                  context 'true or false' do
         | 
| 53 53 | 
             
                    it 'validates associated object based value given' do
         | 
| 54 54 | 
             
                      model.calculate_total
         | 
| 55 | 
            -
                      expect(model.valid?).to  | 
| 55 | 
            +
                      expect(model.valid?).to be false
         | 
| 56 56 | 
             
                      model.dummy_user_email = 'bob@example.com'
         | 
| 57 | 
            -
                      expect(model.valid?).to  | 
| 57 | 
            +
                      expect(model.valid?).to be true
         | 
| 58 58 | 
             
                    end
         | 
| 59 59 | 
             
                  end
         | 
| 60 60 |  | 
| @@ -62,11 +62,11 @@ describe Forminate do | |
| 62 62 | 
             
                    it 'validates associated objects based on result of method call' do
         | 
| 63 63 | 
             
                      model.calculate_total
         | 
| 64 64 | 
             
                      model.dummy_user_email = 'bob@example.com'
         | 
| 65 | 
            -
                      expect(model.valid?).to  | 
| 65 | 
            +
                      expect(model.valid?).to be true
         | 
| 66 66 | 
             
                      model.dummy_book_price = 12.95
         | 
| 67 | 
            -
                      expect(model.valid?).to  | 
| 67 | 
            +
                      expect(model.valid?).to be false
         | 
| 68 68 | 
             
                      model.dummy_credit_card_number = 4242424242424242
         | 
| 69 | 
            -
                      expect(model.valid?).to  | 
| 69 | 
            +
                      expect(model.valid?).to be true
         | 
| 70 70 | 
             
                    end
         | 
| 71 71 | 
             
                  end
         | 
| 72 72 |  | 
| @@ -175,21 +175,55 @@ describe Forminate do | |
| 175 175 | 
             
                end
         | 
| 176 176 | 
             
              end
         | 
| 177 177 |  | 
| 178 | 
            -
               | 
| 178 | 
            +
              shared_examples 'a save method' do
         | 
| 179 179 | 
             
                context 'object is valid' do
         | 
| 180 | 
            -
                   | 
| 180 | 
            +
                  before do
         | 
| 181 181 | 
             
                    model.dummy_user_email = 'bob@example.com'
         | 
| 182 182 | 
             
                    model.calculate_total
         | 
| 183 | 
            +
                  end
         | 
| 184 | 
            +
             | 
| 185 | 
            +
                  it 'persists associations and returns self' do
         | 
| 183 186 | 
             
                    DummyUser.any_instance.should_receive(:save)
         | 
| 184 | 
            -
                    expect( | 
| 187 | 
            +
                    expect(method).to eq(model)
         | 
| 185 188 | 
             
                  end
         | 
| 186 189 | 
             
                end
         | 
| 187 190 |  | 
| 188 | 
            -
                context 'object is  | 
| 189 | 
            -
                  it 'does not  | 
| 191 | 
            +
                context 'object is invalid' do
         | 
| 192 | 
            +
                  it 'does not persist associations and returns false' do
         | 
| 190 193 | 
             
                    DummyUser.any_instance.should_not_receive(:save)
         | 
| 191 | 
            -
                    expect( | 
| 194 | 
            +
                    expect(method).to be false
         | 
| 195 | 
            +
                  end
         | 
| 196 | 
            +
                end
         | 
| 197 | 
            +
              end
         | 
| 198 | 
            +
             | 
| 199 | 
            +
              describe '#save!' do
         | 
| 200 | 
            +
                let(:method) { model.save! }
         | 
| 201 | 
            +
                it_behaves_like 'a save method'
         | 
| 202 | 
            +
              end
         | 
| 203 | 
            +
             | 
| 204 | 
            +
              describe '#save' do
         | 
| 205 | 
            +
                let(:method) { model.save }
         | 
| 206 | 
            +
             | 
| 207 | 
            +
                context 'with ActiveRecord defined' do
         | 
| 208 | 
            +
                  before { model.stub(:use_transaction?).and_return(true) }
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                  it 'wraps persistence in a transaction' do
         | 
| 211 | 
            +
                    ActiveRecord::Base.should_receive(:transaction).once
         | 
| 212 | 
            +
                    model.save
         | 
| 192 213 | 
             
                  end
         | 
| 214 | 
            +
             | 
| 215 | 
            +
                  it_behaves_like 'a save method'
         | 
| 216 | 
            +
                end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                context 'without ActiveRecord defined' do
         | 
| 219 | 
            +
                  before { model.stub(:use_transaction?).and_return(false) }
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                  it 'does not wrap persistence in a transaction' do
         | 
| 222 | 
            +
                    ActiveRecord::Base.should_not_receive(:transaction)
         | 
| 223 | 
            +
                    model.save
         | 
| 224 | 
            +
                  end
         | 
| 225 | 
            +
             | 
| 226 | 
            +
                  it_behaves_like 'a save method'
         | 
| 193 227 | 
             
                end
         | 
| 194 228 | 
             
              end
         | 
| 195 229 |  | 
| @@ -225,13 +259,13 @@ describe Forminate do | |
| 225 259 | 
             
              describe '#respond_to_missing?' do
         | 
| 226 260 | 
             
                context 'associated object responds to method' do
         | 
| 227 261 | 
             
                  it 'returns true' do
         | 
| 228 | 
            -
                    expect(model.respond_to?(:dummy_user_temporary_note)).to  | 
| 262 | 
            +
                    expect(model.respond_to?(:dummy_user_temporary_note)).to be true
         | 
| 229 263 | 
             
                  end
         | 
| 230 264 | 
             
                end
         | 
| 231 265 |  | 
| 232 266 | 
             
                context 'associated object does not respond to method' do
         | 
| 233 267 | 
             
                  it 'returns false' do
         | 
| 234 | 
            -
                    expect(model.respond_to?(:dummy_user_bogus_method)).to  | 
| 268 | 
            +
                    expect(model.respond_to?(:dummy_user_bogus_method)).to be false
         | 
| 235 269 | 
             
                  end
         | 
| 236 270 | 
             
                end
         | 
| 237 271 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: forminate
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mo Lawson
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-10-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: active_attr
         | 
| @@ -76,16 +76,16 @@ dependencies: | |
| 76 76 | 
             
              name: rake
         | 
| 77 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 78 | 
             
                requirements:
         | 
| 79 | 
            -
                - - " | 
| 79 | 
            +
                - - "~>"
         | 
| 80 80 | 
             
                  - !ruby/object:Gem::Version
         | 
| 81 | 
            -
                    version: ' | 
| 81 | 
            +
                    version: '10.1'
         | 
| 82 82 | 
             
              type: :development
         | 
| 83 83 | 
             
              prerelease: false
         | 
| 84 84 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 85 | 
             
                requirements:
         | 
| 86 | 
            -
                - - " | 
| 86 | 
            +
                - - "~>"
         | 
| 87 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 88 | 
            -
                    version: ' | 
| 88 | 
            +
                    version: '10.1'
         | 
| 89 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 90 90 | 
             
              name: rspec
         | 
| 91 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -118,16 +118,16 @@ dependencies: | |
| 118 118 | 
             
              name: sqlite3
         | 
| 119 119 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 120 120 | 
             
                requirements:
         | 
| 121 | 
            -
                - - " | 
| 121 | 
            +
                - - "~>"
         | 
| 122 122 | 
             
                  - !ruby/object:Gem::Version
         | 
| 123 | 
            -
                    version: ' | 
| 123 | 
            +
                    version: '1.3'
         | 
| 124 124 | 
             
              type: :development
         | 
| 125 125 | 
             
              prerelease: false
         | 
| 126 126 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 127 127 | 
             
                requirements:
         | 
| 128 | 
            -
                - - " | 
| 128 | 
            +
                - - "~>"
         | 
| 129 129 | 
             
                  - !ruby/object:Gem::Version
         | 
| 130 | 
            -
                    version: ' | 
| 130 | 
            +
                    version: '1.3'
         | 
| 131 131 | 
             
            description: Form objects for Rails applications
         | 
| 132 132 | 
             
            email:
         | 
| 133 133 | 
             
            - mo@molawson.com
         | 
| @@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 176 176 | 
             
                  version: '0'
         | 
| 177 177 | 
             
            requirements: []
         | 
| 178 178 | 
             
            rubyforge_project: 
         | 
| 179 | 
            -
            rubygems_version: 2. | 
| 179 | 
            +
            rubygems_version: 2.4.2
         | 
| 180 180 | 
             
            signing_key: 
         | 
| 181 181 | 
             
            specification_version: 4
         | 
| 182 182 | 
             
            summary: Create form objects from multiple Active Record and/or ActiveAttr models.
         |