disposable 0.4.6 → 0.4.7
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/.gitignore +1 -0
- data/.travis.yml +31 -29
- data/CHANGES.md +5 -0
- data/Gemfile +1 -1
- data/disposable.gemspec +0 -1
- data/lib/disposable/twin/coercion.rb +4 -1
- data/lib/disposable/twin/property/struct.rb +3 -1
- data/lib/disposable/version.rb +1 -1
- data/test/callback_group_test.rb +27 -27
- data/test/callbacks_test.rb +44 -44
- data/test/expose_test.rb +16 -16
- data/test/persisted_test.rb +30 -30
- data/test/rescheme_test.rb +22 -22
- data/test/skip_getter_test.rb +14 -14
- data/test/twin/builder_test.rb +3 -3
- data/test/twin/changed_test.rb +36 -36
- data/test/twin/coercion_test.rb +61 -23
- data/test/twin/collection_test.rb +46 -46
- data/test/twin/composition_test.rb +20 -20
- data/test/twin/default_test.rb +15 -15
- data/test/twin/expose_test.rb +15 -15
- data/test/twin/feature_test.rb +10 -10
- data/test/twin/from_collection_test.rb +4 -4
- data/test/twin/from_test.rb +3 -3
- data/test/twin/hash_test.rb +38 -38
- data/test/twin/inherit_test.rb +7 -7
- data/test/twin/inheritance_test.rb +6 -6
- data/test/twin/parent_test.rb +5 -5
- data/test/twin/property_processor_test.rb +3 -3
- data/test/twin/readable_test.rb +9 -9
- data/test/twin/save_test.rb +44 -44
- data/test/twin/setup_test.rb +25 -25
- data/test/twin/skip_unchanged_test.rb +6 -6
- data/test/twin/struct/coercion_test.rb +4 -4
- data/test/twin/struct_test.rb +41 -38
- data/test/twin/sync_test.rb +29 -29
- data/test/twin/twin_test.rb +14 -14
- data/test/twin/unnest_test.rb +7 -7
- data/test/twin/virtual_test.rb +3 -3
- data/test/twin/writeable_test.rb +8 -8
- metadata +3 -18
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 60b151f3e5bb984a08ae4631bb836caa4b08b62e64b57d260a93e156129c4729
         | 
| 4 | 
            +
              data.tar.gz: f793d20d7b3fb398d07baddbaf9c835e1944b4f6bfe60f1fb36eb325bf6a5919
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e8ab3254e28140e886dc65341cb8d3f8ae53328f7bb304cd8e0760869e894440c615cafaae1b2d5b2aab1bf721d86d5d659fc40ac1f7301bb6a39d1303cbea02
         | 
| 7 | 
            +
              data.tar.gz: ac09aaa979ddc3de44d409740d3d8a1121d07b498c59ac2d77496091c799b692fcc22d7f495174886a75491d71f230e1544fb87ebc89713e0d97d5bf22db9d82
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,42 +1,44 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 | 
            -
            sudo: false
         | 
| 3 2 | 
             
            rvm:
         | 
| 4 3 | 
             
              - ruby-head
         | 
| 4 | 
            +
              - 2.6
         | 
| 5 5 | 
             
              - 2.5
         | 
| 6 6 | 
             
              - 2.4
         | 
| 7 | 
            -
              - 2.3
         | 
| 8 | 
            -
              - 2.2
         | 
| 9 7 | 
             
            env:
         | 
| 10 | 
            -
              - "DRY_TYPES= | 
| 11 | 
            -
              - "DRY_TYPES= | 
| 12 | 
            -
              - "DRY_TYPES=0.15"
         | 
| 13 | 
            -
              - "DRY_TYPES=0 | 
| 14 | 
            -
              - "DRY_TYPES= | 
| 15 | 
            -
              - "ACTIVERECORD=5.0"
         | 
| 16 | 
            -
              - "ACTIVERECORD=5.1"
         | 
| 17 | 
            -
              - "ACTIVERECORD=5. | 
| 8 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=0.13"
         | 
| 9 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=0.14"
         | 
| 10 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=0.15"
         | 
| 11 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=1.0"
         | 
| 12 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=1.1"
         | 
| 13 | 
            +
              - "ACTIVERECORD=5.0 DRY_TYPES=1.2"
         | 
| 14 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=0.13"
         | 
| 15 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=0.14"
         | 
| 16 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=0.15"
         | 
| 17 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=1.0"
         | 
| 18 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=1.1"
         | 
| 19 | 
            +
              - "ACTIVERECORD=5.1 DRY_TYPES=1.2"
         | 
| 20 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=0.13"
         | 
| 21 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=0.14"
         | 
| 22 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=0.15"
         | 
| 23 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=1.0"
         | 
| 24 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=1.1"
         | 
| 25 | 
            +
              - "ACTIVERECORD=5.2 DRY_TYPES=1.2"
         | 
| 26 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=0.13"
         | 
| 27 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=0.14"
         | 
| 28 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=0.15"
         | 
| 29 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=1.0"
         | 
| 30 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=1.1"
         | 
| 31 | 
            +
              - "ACTIVERECORD=6.0 DRY_TYPES=1.2"
         | 
| 18 32 | 
             
            gemfile:
         | 
| 19 33 | 
             
              - Gemfile
         | 
| 20 34 | 
             
            matrix:
         | 
| 21 35 | 
             
              fast_finish: true
         | 
| 22 | 
            -
              include:
         | 
| 23 | 
            -
                - { rvm: 2.3, env: ACTIVERECORD=4.2  }
         | 
| 24 | 
            -
                - { rvm: 2.2, env: ACTIVERECORD=4.2  }
         | 
| 25 | 
            -
                - { rvm: 2.3, env: ACTIVERECORD=4.1  }
         | 
| 26 | 
            -
                - { rvm: 2.2, env: ACTIVERECORD=4.1  }
         | 
| 27 | 
            -
                - rvm: 2.1
         | 
| 28 | 
            -
                  env:
         | 
| 29 | 
            -
                    - ACTIVERECORD=4.1
         | 
| 30 | 
            -
                    - DRY_TYPES=0.10
         | 
| 31 36 | 
             
              allow_failures:
         | 
| 32 37 | 
             
                - rvm: ruby-head
         | 
| 33 | 
            -
                - env: ACTIVERECORD=4.1
         | 
| 34 | 
            -
                - rvm: 2.1
         | 
| 35 | 
            -
                - rvm: 2.2
         | 
| 36 38 | 
             
              exclude:
         | 
| 37 | 
            -
                - { | 
| 38 | 
            -
                - { | 
| 39 | 
            -
                - { | 
| 40 | 
            -
                - { | 
| 41 | 
            -
                - { | 
| 42 | 
            -
                - { | 
| 39 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.13"}
         | 
| 40 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.14"}
         | 
| 41 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.15"}
         | 
| 42 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.0"}
         | 
| 43 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.1"}
         | 
| 44 | 
            +
                - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.2"}
         | 
    
        data/CHANGES.md
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/disposable.gemspec
    CHANGED
    
    | @@ -26,7 +26,6 @@ Gem::Specification.new do |spec| | |
| 26 26 | 
             
              spec.add_development_dependency "rake"
         | 
| 27 27 | 
             
              spec.add_development_dependency "minitest"
         | 
| 28 28 | 
             
              spec.add_development_dependency "activerecord"#, "4.2.5"
         | 
| 29 | 
            -
              spec.add_development_dependency "sqlite3", '~> 1.3.0'
         | 
| 30 29 | 
             
              spec.add_development_dependency "dry-types"# "~> 0.6"
         | 
| 31 30 | 
             
              # spec.add_development_dependency "database_cleaner"
         | 
| 32 31 | 
             
            end
         | 
| @@ -18,7 +18,10 @@ module Disposable::Twin::Coercion | |
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                def coercing_setter!(name, type, nilify=false)
         | 
| 21 | 
            -
             | 
| 21 | 
            +
                  # TODO: remove nilily with next release (0.5) for new dry-type versions
         | 
| 22 | 
            +
                  type = type ? (DRY_TYPES_CONSTANT::Nil | type) : DRY_TYPES_CONSTANT::Nil if nilify
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  warn "DEPRECATION WARNING [Disposable]: nilify is deprecated and it will be removed with the next release" if nilify && DRY_TYPES_VERSION >= Gem::Version.new("1.0.0")
         | 
| 22 25 |  | 
| 23 26 | 
             
                  mod = Module.new do
         | 
| 24 27 | 
             
                    define_method("#{name}=") do |value|
         | 
| @@ -6,7 +6,9 @@ class Disposable::Twin | |
| 6 6 | 
             
                module Struct
         | 
| 7 7 | 
             
                  def read_value_for(dfn, options)
         | 
| 8 8 | 
             
                    name = dfn[:name]
         | 
| 9 | 
            -
                     | 
| 9 | 
            +
                    # TODO: test sym vs. str.
         | 
| 10 | 
            +
                    return unless key_value = model.to_h.find { |k, _| k.to_sym == name.to_sym }
         | 
| 11 | 
            +
                    key_value.last
         | 
| 10 12 | 
             
                  end
         | 
| 11 13 |  | 
| 12 14 | 
             
                  def sync_hash_representer # TODO: make this without representable, please.
         | 
    
        data/lib/disposable/version.rb
    CHANGED
    
    
    
        data/test/callback_group_test.rb
    CHANGED
    
    | @@ -55,7 +55,7 @@ class CallbackGroupTest < MiniTest::Spec | |
| 55 55 | 
             
                album = Album.new(songs: [Song.new(title: "Dead To Me"), Song.new(title: "Diesel Boy")])
         | 
| 56 56 | 
             
                twin  = AlbumTwin.new(album)
         | 
| 57 57 |  | 
| 58 | 
            -
                Group.new(twin).().invocations.must_equal [
         | 
| 58 | 
            +
                expect(Group.new(twin).().invocations).must_equal [
         | 
| 59 59 | 
             
                  [:on_change, :change!, []],
         | 
| 60 60 | 
             
                  [:on_add, :notify_album!, []],
         | 
| 61 61 | 
             
                  [:on_add, :reset_song!, []],
         | 
| @@ -76,7 +76,7 @@ class CallbackGroupTest < MiniTest::Spec | |
| 76 76 |  | 
| 77 77 | 
             
                group = Group.new(twin).(content: content)
         | 
| 78 78 |  | 
| 79 | 
            -
                group.invocations.must_equal [
         | 
| 79 | 
            +
                expect(group.invocations).must_equal [
         | 
| 80 80 | 
             
                  [:on_change, :change!, [twin]],
         | 
| 81 81 | 
             
                  [:on_add, :notify_album!, [twin.songs[0], twin.songs[1]]],
         | 
| 82 82 | 
             
                  [:on_add, :reset_song!,   [twin.songs[0], twin.songs[1]]],
         | 
| @@ -85,8 +85,8 @@ class CallbackGroupTest < MiniTest::Spec | |
| 85 85 | 
             
                  [:on_update, :expire_cache!, []],
         | 
| 86 86 | 
             
                ]
         | 
| 87 87 |  | 
| 88 | 
            -
                content.must_equal "notify_album!notify_album!reset_song!reset_song!"
         | 
| 89 | 
            -
                group.output.must_equal "Album has changed!"
         | 
| 88 | 
            +
                expect(content).must_equal "notify_album!notify_album!reset_song!reset_song!"
         | 
| 89 | 
            +
                expect(group.output).must_equal "Album has changed!"
         | 
| 90 90 | 
             
              end
         | 
| 91 91 |  | 
| 92 92 |  | 
| @@ -129,7 +129,7 @@ class CallbackGroupTest < MiniTest::Spec | |
| 129 129 |  | 
| 130 130 | 
             
                # pp group.invocations
         | 
| 131 131 |  | 
| 132 | 
            -
                group.invocations.must_equal [
         | 
| 132 | 
            +
                expect(group.invocations).must_equal [
         | 
| 133 133 | 
             
                  [:on_change, :change!, [twin]],
         | 
| 134 134 | 
             
                  [:on_add, :notify_album!, [twin.songs[0]]],
         | 
| 135 135 | 
             
                  [:on_add, :reset_song!,   [twin.songs[0]]],
         | 
| @@ -138,7 +138,7 @@ class CallbackGroupTest < MiniTest::Spec | |
| 138 138 | 
             
                  [:on_update, :expire_cache!, []],
         | 
| 139 139 | 
             
                ]
         | 
| 140 140 |  | 
| 141 | 
            -
                content.must_equal "Op: changed! [CallbackGroupTest::Operation]Op: notify_album! [CallbackGroupTest::Operation]Op: reset_song! [CallbackGroupTest::Operation]"
         | 
| 141 | 
            +
                expect(content).must_equal "Op: changed! [CallbackGroupTest::Operation]Op: notify_album! [CallbackGroupTest::Operation]Op: reset_song! [CallbackGroupTest::Operation]"
         | 
| 142 142 | 
             
              end
         | 
| 143 143 | 
             
            end
         | 
| 144 144 |  | 
| @@ -157,12 +157,12 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 157 157 | 
             
              end
         | 
| 158 158 |  | 
| 159 159 | 
             
              it do
         | 
| 160 | 
            -
                Group.hooks.size.must_equal 4
         | 
| 161 | 
            -
                Group.hooks[0].to_s.must_equal "[:on_change, :change!, {}]"
         | 
| 160 | 
            +
                expect(Group.hooks.size).must_equal 4
         | 
| 161 | 
            +
                expect(Group.hooks[0].to_s).must_equal "[:on_change, :change!, {}]"
         | 
| 162 162 | 
             
                # Group.hooks[1][1][:nested].hooks.to_s.must_equal "[[:on_add, [:notify_album!]],[:on_add, [:reset_song!]]]"
         | 
| 163 | 
            -
                Group.hooks[2].to_s.must_equal "[:on_change, :rehash_name!, {:property=>:title}]"
         | 
| 163 | 
            +
                expect(Group.hooks[2].to_s).must_equal "[:on_change, :rehash_name!, {:property=>:title}]"
         | 
| 164 164 |  | 
| 165 | 
            -
                Group.definitions.get(Group.hooks[3][1])[:nested].hooks.to_s.must_equal "[[:on_change, :sing!, {}]]"
         | 
| 165 | 
            +
                expect(Group.definitions.get(Group.hooks[3][1])[:nested].hooks.to_s).must_equal "[[:on_change, :sing!, {}]]"
         | 
| 166 166 | 
             
              end
         | 
| 167 167 |  | 
| 168 168 | 
             
              class EmptyGroup < Group
         | 
| @@ -171,7 +171,7 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 171 171 |  | 
| 172 172 |  | 
| 173 173 | 
             
              it do
         | 
| 174 | 
            -
                EmptyGroup.hooks.size.must_equal 4
         | 
| 174 | 
            +
                expect(EmptyGroup.hooks.size).must_equal 4
         | 
| 175 175 | 
             
                # TODO:
         | 
| 176 176 | 
             
              end
         | 
| 177 177 |  | 
| @@ -183,10 +183,10 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 183 183 | 
             
              end
         | 
| 184 184 |  | 
| 185 185 | 
             
              it do
         | 
| 186 | 
            -
                Group.hooks.size.must_equal 4
         | 
| 186 | 
            +
                expect(Group.hooks.size).must_equal 4
         | 
| 187 187 | 
             
                # pp EnhancedGroup.hooks
         | 
| 188 | 
            -
                EnhancedGroup.hooks.size.must_equal 6
         | 
| 189 | 
            -
                EnhancedGroup.definitions.get(EnhancedGroup.hooks[5][1])[:nested].hooks.to_s.must_equal "[[:on_add, :rewind!, {}]]"
         | 
| 188 | 
            +
                expect(EnhancedGroup.hooks.size).must_equal 6
         | 
| 189 | 
            +
                expect(EnhancedGroup.definitions.get(EnhancedGroup.hooks[5][1])[:nested].hooks.to_s).must_equal "[[:on_add, :rewind!, {}]]"
         | 
| 190 190 | 
             
              end
         | 
| 191 191 |  | 
| 192 192 | 
             
              class EnhancedWithInheritGroup < EnhancedGroup
         | 
| @@ -199,13 +199,13 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 199 199 | 
             
              end
         | 
| 200 200 |  | 
| 201 201 | 
             
              it do
         | 
| 202 | 
            -
                Group.hooks.size.must_equal 4
         | 
| 203 | 
            -
                EnhancedGroup.hooks.size.must_equal 6
         | 
| 202 | 
            +
                expect(Group.hooks.size).must_equal 4
         | 
| 203 | 
            +
                expect(EnhancedGroup.hooks.size).must_equal 6
         | 
| 204 204 |  | 
| 205 | 
            -
                EnhancedGroup.definitions.get(EnhancedGroup.hooks[5][1])[:nested].hooks.to_s.must_equal "[[:on_add, :rewind!, {}]]"
         | 
| 206 | 
            -
                EnhancedWithInheritGroup.hooks.size.must_equal 6
         | 
| 207 | 
            -
                EnhancedWithInheritGroup.definitions.get(EnhancedWithInheritGroup.hooks[1][1])[:nested].hooks.to_s.must_equal "[[:on_add, :rewind!, {}], [:on_add, :eat!, {}]]"
         | 
| 208 | 
            -
                EnhancedWithInheritGroup.definitions.get(EnhancedWithInheritGroup.hooks[3][1])[:nested].hooks.to_s.must_equal "[[:on_change, :sing!, {}], [:on_delete, :yell!, {}]]"
         | 
| 205 | 
            +
                expect(EnhancedGroup.definitions.get(EnhancedGroup.hooks[5][1])[:nested].hooks.to_s).must_equal "[[:on_add, :rewind!, {}]]"
         | 
| 206 | 
            +
                expect(EnhancedWithInheritGroup.hooks.size).must_equal 6
         | 
| 207 | 
            +
                expect(EnhancedWithInheritGroup.definitions.get(EnhancedWithInheritGroup.hooks[1][1])[:nested].hooks.to_s).must_equal "[[:on_add, :rewind!, {}], [:on_add, :eat!, {}]]"
         | 
| 208 | 
            +
                expect(EnhancedWithInheritGroup.definitions.get(EnhancedWithInheritGroup.hooks[3][1])[:nested].hooks.to_s).must_equal "[[:on_change, :sing!, {}], [:on_delete, :yell!, {}]]"
         | 
| 209 209 | 
             
              end
         | 
| 210 210 |  | 
| 211 211 | 
             
              class RemovingInheritGroup < Group
         | 
| @@ -226,10 +226,10 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 226 226 | 
             
              # TODO: object_id tests for all nested representers.
         | 
| 227 227 |  | 
| 228 228 | 
             
              it do
         | 
| 229 | 
            -
                Group.hooks.size.must_equal 4
         | 
| 230 | 
            -
                RemovingInheritGroup.hooks.size.must_equal 3
         | 
| 231 | 
            -
                RemovingInheritGroup.definitions.get(RemovingInheritGroup.hooks[0][1])[:nested].hooks.to_s.must_equal "[[:on_add, :reset_song!, {}]]"
         | 
| 232 | 
            -
                RemovingInheritGroup.definitions.get(RemovingInheritGroup.hooks[2][1])[:nested].hooks.to_s.must_equal "[[:on_change, :sing!, {}]]"
         | 
| 229 | 
            +
                expect(Group.hooks.size).must_equal 4
         | 
| 230 | 
            +
                expect(RemovingInheritGroup.hooks.size).must_equal 3
         | 
| 231 | 
            +
                expect(RemovingInheritGroup.definitions.get(RemovingInheritGroup.hooks[0][1])[:nested].hooks.to_s).must_equal "[[:on_add, :reset_song!, {}]]"
         | 
| 232 | 
            +
                expect(RemovingInheritGroup.definitions.get(RemovingInheritGroup.hooks[2][1])[:nested].hooks.to_s).must_equal "[[:on_change, :sing!, {}]]"
         | 
| 233 233 | 
             
              end
         | 
| 234 234 |  | 
| 235 235 | 
             
              # Group::clone
         | 
| @@ -239,7 +239,7 @@ class CallbackGroupInheritanceTest < MiniTest::Spec | |
| 239 239 | 
             
              end
         | 
| 240 240 |  | 
| 241 241 | 
             
              it do
         | 
| 242 | 
            -
                Group.hooks.size.must_equal 4
         | 
| 243 | 
            -
                ClonedGroup.hooks.size.must_equal 3
         | 
| 242 | 
            +
                expect(Group.hooks.size).must_equal 4
         | 
| 243 | 
            +
                expect(ClonedGroup.hooks.size).must_equal 3
         | 
| 244 244 | 
             
              end
         | 
| 245 | 
            -
            end
         | 
| 245 | 
            +
            end
         | 
    
        data/test/callbacks_test.rb
    CHANGED
    
    | @@ -46,7 +46,7 @@ class CallbacksTest < MiniTest::Spec | |
| 46 46 | 
             
                it do
         | 
| 47 47 | 
             
                  invokes = []
         | 
| 48 48 | 
             
                  Callback.new(twin).on_create { |t| invokes << t }
         | 
| 49 | 
            -
                  invokes.must_equal []
         | 
| 49 | 
            +
                  expect(invokes).must_equal []
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 52 | 
             
                # save, without any attributes changed.
         | 
| @@ -55,7 +55,7 @@ class CallbacksTest < MiniTest::Spec | |
| 55 55 |  | 
| 56 56 | 
             
                  invokes = []
         | 
| 57 57 | 
             
                  Callback.new(twin).on_create { |t| invokes << t }
         | 
| 58 | 
            -
                  invokes.must_equal [twin]
         | 
| 58 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 59 59 | 
             
                end
         | 
| 60 60 |  | 
| 61 61 | 
             
                # before and after save, with attributes changed
         | 
| @@ -64,12 +64,12 @@ class CallbacksTest < MiniTest::Spec | |
| 64 64 | 
             
                  twin.name = "Run For Cover"
         | 
| 65 65 | 
             
                  invokes = []
         | 
| 66 66 | 
             
                  Callback.new(twin).on_create { |t| invokes << t }
         | 
| 67 | 
            -
                  invokes.must_equal []
         | 
| 67 | 
            +
                  expect(invokes).must_equal []
         | 
| 68 68 |  | 
| 69 69 | 
             
                  twin.save
         | 
| 70 70 |  | 
| 71 71 | 
             
                  Callback.new(twin).on_create { |t| invokes << t }
         | 
| 72 | 
            -
                  invokes.must_equal [twin]
         | 
| 72 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 73 73 | 
             
                end
         | 
| 74 74 |  | 
| 75 75 | 
             
                # for collections.
         | 
| @@ -80,12 +80,12 @@ class CallbacksTest < MiniTest::Spec | |
| 80 80 | 
             
                  invokes = []
         | 
| 81 81 |  | 
| 82 82 | 
             
                  Callback.new(twin.songs).on_create { |t| invokes << t }
         | 
| 83 | 
            -
                  invokes.must_equal []
         | 
| 83 | 
            +
                  expect(invokes).must_equal []
         | 
| 84 84 |  | 
| 85 85 | 
             
                  twin.save
         | 
| 86 86 |  | 
| 87 87 | 
             
                  Callback.new(twin.songs).on_create { |t| invokes << t }
         | 
| 88 | 
            -
                  invokes.must_equal [twin.songs[0], twin.songs[2]]
         | 
| 88 | 
            +
                  expect(invokes).must_equal [twin.songs[0], twin.songs[2]]
         | 
| 89 89 | 
             
                end
         | 
| 90 90 | 
             
              end
         | 
| 91 91 |  | 
| @@ -96,7 +96,7 @@ class CallbacksTest < MiniTest::Spec | |
| 96 96 | 
             
                it do
         | 
| 97 97 | 
             
                  invokes = []
         | 
| 98 98 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 99 | 
            -
                  invokes.must_equal []
         | 
| 99 | 
            +
                  expect(invokes).must_equal []
         | 
| 100 100 | 
             
                end
         | 
| 101 101 |  | 
| 102 102 | 
             
                # single twin.
         | 
| @@ -106,40 +106,40 @@ class CallbacksTest < MiniTest::Spec | |
| 106 106 |  | 
| 107 107 | 
             
                  invokes = []
         | 
| 108 108 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 109 | 
            -
                  invokes.must_equal []
         | 
| 109 | 
            +
                  expect(invokes).must_equal []
         | 
| 110 110 |  | 
| 111 111 | 
             
                  invokes = []
         | 
| 112 112 | 
             
                  twin.save
         | 
| 113 113 |  | 
| 114 114 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 115 | 
            -
                  invokes.must_equal []
         | 
| 115 | 
            +
                  expect(invokes).must_equal []
         | 
| 116 116 |  | 
| 117 117 |  | 
| 118 118 | 
             
                  # now with the persisted album.
         | 
| 119 119 | 
             
                  twin = AlbumTwin.new(album) # Album is persisted now.
         | 
| 120 120 |  | 
| 121 121 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 122 | 
            -
                  invokes.must_equal []
         | 
| 122 | 
            +
                  expect(invokes).must_equal []
         | 
| 123 123 |  | 
| 124 124 | 
             
                  invokes = []
         | 
| 125 125 | 
             
                  twin.save
         | 
| 126 126 |  | 
| 127 127 | 
             
                  # nothing has changed, yet.
         | 
| 128 128 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 129 | 
            -
                  invokes.must_equal []
         | 
| 129 | 
            +
                  expect(invokes).must_equal []
         | 
| 130 130 |  | 
| 131 131 | 
             
                  twin.name= "Corridors Of Power"
         | 
| 132 132 |  | 
| 133 133 | 
             
                  # this will even trigger on_update before saving.
         | 
| 134 134 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 135 | 
            -
                  invokes.must_equal [twin]
         | 
| 135 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 136 136 |  | 
| 137 137 | 
             
                  invokes = []
         | 
| 138 138 | 
             
                  twin.save
         | 
| 139 139 |  | 
| 140 140 | 
             
                  # name changed.
         | 
| 141 141 | 
             
                  Callback.new(twin).on_update { |t| invokes << t }
         | 
| 142 | 
            -
                  invokes.must_equal [twin]
         | 
| 142 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 143 143 | 
             
                end
         | 
| 144 144 |  | 
| 145 145 | 
             
                # for collections.
         | 
| @@ -150,41 +150,41 @@ class CallbacksTest < MiniTest::Spec | |
| 150 150 |  | 
| 151 151 | 
             
                  invokes = []
         | 
| 152 152 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 153 | 
            -
                  invokes.must_equal []
         | 
| 153 | 
            +
                  expect(invokes).must_equal []
         | 
| 154 154 |  | 
| 155 155 | 
             
                  invokes = []
         | 
| 156 156 | 
             
                  twin.save
         | 
| 157 157 |  | 
| 158 158 | 
             
                  # initial save is no update.
         | 
| 159 159 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 160 | 
            -
                  invokes.must_equal []
         | 
| 160 | 
            +
                  expect(invokes).must_equal []
         | 
| 161 161 |  | 
| 162 162 |  | 
| 163 163 | 
             
                  # now with the persisted album.
         | 
| 164 164 | 
             
                  twin = AlbumTwin.new(album) # Album is persisted now.
         | 
| 165 165 |  | 
| 166 166 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 167 | 
            -
                  invokes.must_equal []
         | 
| 167 | 
            +
                  expect(invokes).must_equal []
         | 
| 168 168 |  | 
| 169 169 | 
             
                  invokes = []
         | 
| 170 170 | 
             
                  twin.save
         | 
| 171 171 |  | 
| 172 172 | 
             
                  # nothing has changed, yet.
         | 
| 173 173 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 174 | 
            -
                  invokes.must_equal []
         | 
| 174 | 
            +
                  expect(invokes).must_equal []
         | 
| 175 175 |  | 
| 176 176 | 
             
                  twin.songs[1].title= "After The War"
         | 
| 177 177 | 
             
                  twin.songs[2].title= "Run For Cover"
         | 
| 178 178 |  | 
| 179 179 | 
             
                  # # this will even trigger on_update before saving.
         | 
| 180 180 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 181 | 
            -
                  invokes.must_equal [twin.songs[1], twin.songs[2]]
         | 
| 181 | 
            +
                  expect(invokes).must_equal [twin.songs[1], twin.songs[2]]
         | 
| 182 182 |  | 
| 183 183 | 
             
                  invokes = []
         | 
| 184 184 | 
             
                  twin.save
         | 
| 185 185 |  | 
| 186 186 | 
             
                  Callback.new(twin.songs).on_update { |t| invokes << t }
         | 
| 187 | 
            -
                  invokes.must_equal [twin.songs[1], twin.songs[2]]
         | 
| 187 | 
            +
                  expect(invokes).must_equal [twin.songs[1], twin.songs[2]]
         | 
| 188 188 | 
             
                end
         | 
| 189 189 | 
             
                # it do
         | 
| 190 190 | 
             
                #   album.songs << song1 = Song.new
         | 
| @@ -210,7 +210,7 @@ class CallbacksTest < MiniTest::Spec | |
| 210 210 | 
             
                it do
         | 
| 211 211 | 
             
                  invokes = []
         | 
| 212 212 | 
             
                  Callback.new(twin.songs).on_add { |t| invokes << t }
         | 
| 213 | 
            -
                  invokes.must_equal []
         | 
| 213 | 
            +
                  expect(invokes).must_equal []
         | 
| 214 214 | 
             
                end
         | 
| 215 215 |  | 
| 216 216 | 
             
                # collection present on initialize are not added.
         | 
| @@ -220,7 +220,7 @@ class CallbacksTest < MiniTest::Spec | |
| 220 220 | 
             
                  album.songs = [ex_song, song]
         | 
| 221 221 |  | 
| 222 222 | 
             
                  Callback.new(twin.songs).on_add { |t| invokes << t }
         | 
| 223 | 
            -
                  invokes.must_equal []
         | 
| 223 | 
            +
                  expect(invokes).must_equal []
         | 
| 224 224 | 
             
                end
         | 
| 225 225 |  | 
| 226 226 | 
             
                # items added after initialization are added.
         | 
| @@ -232,14 +232,14 @@ class CallbacksTest < MiniTest::Spec | |
| 232 232 | 
             
                  twin.songs << song
         | 
| 233 233 |  | 
| 234 234 | 
             
                  Callback.new(twin.songs).on_add { |t| invokes << t }
         | 
| 235 | 
            -
                  invokes.must_equal [twin.songs[1]]
         | 
| 235 | 
            +
                  expect(invokes).must_equal [twin.songs[1]]
         | 
| 236 236 |  | 
| 237 237 | 
             
                  twin.save
         | 
| 238 238 |  | 
| 239 239 | 
             
                  # still shows the added after save.
         | 
| 240 240 | 
             
                  invokes = []
         | 
| 241 241 | 
             
                  Callback.new(twin.songs).on_add { |t| invokes << t }
         | 
| 242 | 
            -
                  invokes.must_equal [twin.songs[1]]
         | 
| 242 | 
            +
                  expect(invokes).must_equal [twin.songs[1]]
         | 
| 243 243 | 
             
                end
         | 
| 244 244 | 
             
              end
         | 
| 245 245 |  | 
| @@ -250,7 +250,7 @@ class CallbacksTest < MiniTest::Spec | |
| 250 250 | 
             
                it do
         | 
| 251 251 | 
             
                  invokes = []
         | 
| 252 252 | 
             
                  Callback.new(twin.songs).on_add(:created) { |t| invokes << t }
         | 
| 253 | 
            -
                  invokes.must_equal []
         | 
| 253 | 
            +
                  expect(invokes).must_equal []
         | 
| 254 254 | 
             
                end
         | 
| 255 255 |  | 
| 256 256 | 
             
                # collection present on initialize are not added.
         | 
| @@ -260,7 +260,7 @@ class CallbacksTest < MiniTest::Spec | |
| 260 260 | 
             
                  album.songs = [ex_song, song]
         | 
| 261 261 |  | 
| 262 262 | 
             
                  Callback.new(twin.songs).on_add(:created) { |t| invokes << t }
         | 
| 263 | 
            -
                  invokes.must_equal []
         | 
| 263 | 
            +
                  expect(invokes).must_equal []
         | 
| 264 264 | 
             
                end
         | 
| 265 265 |  | 
| 266 266 | 
             
                # items added after initialization are added.
         | 
| @@ -273,14 +273,14 @@ class CallbacksTest < MiniTest::Spec | |
| 273 273 | 
             
                  twin.songs << ex_song # already created.
         | 
| 274 274 |  | 
| 275 275 | 
             
                  Callback.new(twin.songs).on_add(:created) { |t| invokes << t }
         | 
| 276 | 
            -
                  invokes.must_equal []
         | 
| 276 | 
            +
                  expect(invokes).must_equal []
         | 
| 277 277 |  | 
| 278 278 | 
             
                  twin.save
         | 
| 279 279 |  | 
| 280 280 | 
             
                  # still shows the added after save.
         | 
| 281 281 | 
             
                  invokes = []
         | 
| 282 282 | 
             
                  Callback.new(twin.songs).on_add(:created) { |t| invokes << t }
         | 
| 283 | 
            -
                  invokes.must_equal [twin.songs[1]] # only the created is invoked.
         | 
| 283 | 
            +
                  expect(invokes).must_equal [twin.songs[1]] # only the created is invoked.
         | 
| 284 284 | 
             
                end
         | 
| 285 285 | 
             
              end
         | 
| 286 286 |  | 
| @@ -291,7 +291,7 @@ class CallbacksTest < MiniTest::Spec | |
| 291 291 | 
             
                it do
         | 
| 292 292 | 
             
                  invokes = []
         | 
| 293 293 | 
             
                  Callback.new(twin.songs).on_delete { |t| invokes << t }
         | 
| 294 | 
            -
                  invokes.must_equal []
         | 
| 294 | 
            +
                  expect(invokes).must_equal []
         | 
| 295 295 | 
             
                end
         | 
| 296 296 |  | 
| 297 297 | 
             
                # collection present but nothing deleted.
         | 
| @@ -301,7 +301,7 @@ class CallbacksTest < MiniTest::Spec | |
| 301 301 | 
             
                  album.songs = [ex_song, song]
         | 
| 302 302 |  | 
| 303 303 | 
             
                  Callback.new(twin.songs).on_delete { |t| invokes << t }
         | 
| 304 | 
            -
                  invokes.must_equal []
         | 
| 304 | 
            +
                  expect(invokes).must_equal []
         | 
| 305 305 | 
             
                end
         | 
| 306 306 |  | 
| 307 307 | 
             
                # items deleted.
         | 
| @@ -313,14 +313,14 @@ class CallbacksTest < MiniTest::Spec | |
| 313 313 | 
             
                  twin.songs.delete(deleted = twin.songs[0])
         | 
| 314 314 |  | 
| 315 315 | 
             
                  Callback.new(twin.songs).on_delete { |t| invokes << t }
         | 
| 316 | 
            -
                  invokes.must_equal [deleted]
         | 
| 316 | 
            +
                  expect(invokes).must_equal [deleted]
         | 
| 317 317 |  | 
| 318 318 | 
             
                  twin.save
         | 
| 319 319 |  | 
| 320 320 | 
             
                  # still shows the deleted after save.
         | 
| 321 321 | 
             
                  invokes = []
         | 
| 322 322 | 
             
                  Callback.new(twin.songs).on_delete { |t| invokes << t }
         | 
| 323 | 
            -
                  invokes.must_equal [deleted]
         | 
| 323 | 
            +
                  expect(invokes).must_equal [deleted]
         | 
| 324 324 | 
             
                end
         | 
| 325 325 | 
             
              end
         | 
| 326 326 |  | 
| @@ -331,7 +331,7 @@ class CallbacksTest < MiniTest::Spec | |
| 331 331 | 
             
                it do
         | 
| 332 332 | 
             
                  invokes = []
         | 
| 333 333 | 
             
                  Callback.new(twin.songs).on_destroy { |t| invokes << t }
         | 
| 334 | 
            -
                  invokes.must_equal []
         | 
| 334 | 
            +
                  expect(invokes).must_equal []
         | 
| 335 335 | 
             
                end
         | 
| 336 336 |  | 
| 337 337 | 
             
                # collection present but nothing deleted.
         | 
| @@ -341,7 +341,7 @@ class CallbacksTest < MiniTest::Spec | |
| 341 341 | 
             
                  album.songs = [ex_song, song]
         | 
| 342 342 |  | 
| 343 343 | 
             
                  Callback.new(twin.songs).on_destroy { |t| invokes << t }
         | 
| 344 | 
            -
                  invokes.must_equal []
         | 
| 344 | 
            +
                  expect(invokes).must_equal []
         | 
| 345 345 | 
             
                end
         | 
| 346 346 |  | 
| 347 347 | 
             
                # items deleted, doesn't trigger on_destroy.
         | 
| @@ -353,7 +353,7 @@ class CallbacksTest < MiniTest::Spec | |
| 353 353 | 
             
                  twin.songs.delete(twin.songs[0])
         | 
| 354 354 |  | 
| 355 355 | 
             
                  Callback.new(twin.songs).on_destroy { |t| invokes << t }
         | 
| 356 | 
            -
                  invokes.must_equal []
         | 
| 356 | 
            +
                  expect(invokes).must_equal []
         | 
| 357 357 | 
             
                end
         | 
| 358 358 |  | 
| 359 359 | 
             
                # items destroyed.
         | 
| @@ -365,7 +365,7 @@ class CallbacksTest < MiniTest::Spec | |
| 365 365 | 
             
                  twin.songs.destroy(deleted = twin.songs[0])
         | 
| 366 366 |  | 
| 367 367 | 
             
                  Callback.new(twin.songs).on_destroy { |t| invokes << t }
         | 
| 368 | 
            -
                  invokes.must_equal []
         | 
| 368 | 
            +
                  expect(invokes).must_equal []
         | 
| 369 369 |  | 
| 370 370 | 
             
                  twin.extend(Disposable::Twin::Collection::Semantics) # now #save will destroy.
         | 
| 371 371 | 
             
                  twin.save
         | 
| @@ -373,7 +373,7 @@ class CallbacksTest < MiniTest::Spec | |
| 373 373 | 
             
                  # still shows the deleted after save.
         | 
| 374 374 | 
             
                  invokes = []
         | 
| 375 375 | 
             
                  Callback.new(twin.songs).on_destroy { |t| invokes << t }
         | 
| 376 | 
            -
                  invokes.must_equal [deleted]
         | 
| 376 | 
            +
                  expect(invokes).must_equal [deleted]
         | 
| 377 377 | 
             
                end
         | 
| 378 378 | 
             
              end
         | 
| 379 379 |  | 
| @@ -384,7 +384,7 @@ class CallbacksTest < MiniTest::Spec | |
| 384 384 | 
             
                # after initialization
         | 
| 385 385 | 
             
                it do
         | 
| 386 386 | 
             
                  Callback.new(twin).on_change { |t| invokes << t }
         | 
| 387 | 
            -
                  invokes.must_equal []
         | 
| 387 | 
            +
                  expect(invokes).must_equal []
         | 
| 388 388 | 
             
                end
         | 
| 389 389 |  | 
| 390 390 | 
             
                # save, without any attributes changed. unpersisted before.
         | 
| @@ -394,7 +394,7 @@ class CallbacksTest < MiniTest::Spec | |
| 394 394 | 
             
                  twin.save
         | 
| 395 395 |  | 
| 396 396 | 
             
                  Callback.new(twin).on_change { |t| invokes << t }
         | 
| 397 | 
            -
                  invokes.must_equal [] # nothing has changed, not even persisted?.
         | 
| 397 | 
            +
                  expect(invokes).must_equal [] # nothing has changed, not even persisted?.
         | 
| 398 398 | 
             
                end
         | 
| 399 399 |  | 
| 400 400 | 
             
                # save, without any attributes changed. persisted before.
         | 
| @@ -402,7 +402,7 @@ class CallbacksTest < MiniTest::Spec | |
| 402 402 | 
             
                  twin.save
         | 
| 403 403 |  | 
| 404 404 | 
             
                  Callback.new(twin).on_change { |t| invokes << t }
         | 
| 405 | 
            -
                  invokes.must_equal [twin]
         | 
| 405 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 406 406 | 
             
                end
         | 
| 407 407 |  | 
| 408 408 | 
             
                # before and after save, with attributes changed
         | 
| @@ -411,24 +411,24 @@ class CallbacksTest < MiniTest::Spec | |
| 411 411 | 
             
                  twin.name = "Run For Cover"
         | 
| 412 412 | 
             
                  invokes = []
         | 
| 413 413 | 
             
                  Callback.new(twin).on_change { |t| invokes << t }
         | 
| 414 | 
            -
                  invokes.must_equal [twin]
         | 
| 414 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 415 415 |  | 
| 416 416 | 
             
                  twin.save
         | 
| 417 417 |  | 
| 418 418 | 
             
                  invokes = []
         | 
| 419 419 | 
             
                  Callback.new(twin).on_change { |t| invokes << t }
         | 
| 420 | 
            -
                  invokes.must_equal [twin]
         | 
| 420 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 421 421 | 
             
                end
         | 
| 422 422 |  | 
| 423 423 | 
             
                # for scalars: on_change(:email).
         | 
| 424 424 | 
             
                it do
         | 
| 425 425 | 
             
                  Callback.new(twin).on_change(property: :name) { |t| invokes << t }
         | 
| 426 | 
            -
                  invokes.must_equal []
         | 
| 426 | 
            +
                  expect(invokes).must_equal []
         | 
| 427 427 |  | 
| 428 428 | 
             
                  twin.name = "Unforgiven"
         | 
| 429 429 |  | 
| 430 430 | 
             
                  Callback.new(twin).on_change(property: :name) { |t| invokes << t }
         | 
| 431 | 
            -
                  invokes.must_equal [twin]
         | 
| 431 | 
            +
                  expect(invokes).must_equal [twin]
         | 
| 432 432 | 
             
                end
         | 
| 433 433 |  | 
| 434 434 | 
             
                # for collections.
         | 
| @@ -447,4 +447,4 @@ class CallbacksTest < MiniTest::Spec | |
| 447 447 | 
             
                #   invokes.must_equal [twin.songs[0], twin.songs[2]]
         | 
| 448 448 | 
             
                # end
         | 
| 449 449 | 
             
              end
         | 
| 450 | 
            -
            end
         | 
| 450 | 
            +
            end
         |