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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +31 -29
  4. data/CHANGES.md +5 -0
  5. data/Gemfile +1 -1
  6. data/disposable.gemspec +0 -1
  7. data/lib/disposable/twin/coercion.rb +4 -1
  8. data/lib/disposable/twin/property/struct.rb +3 -1
  9. data/lib/disposable/version.rb +1 -1
  10. data/test/callback_group_test.rb +27 -27
  11. data/test/callbacks_test.rb +44 -44
  12. data/test/expose_test.rb +16 -16
  13. data/test/persisted_test.rb +30 -30
  14. data/test/rescheme_test.rb +22 -22
  15. data/test/skip_getter_test.rb +14 -14
  16. data/test/twin/builder_test.rb +3 -3
  17. data/test/twin/changed_test.rb +36 -36
  18. data/test/twin/coercion_test.rb +61 -23
  19. data/test/twin/collection_test.rb +46 -46
  20. data/test/twin/composition_test.rb +20 -20
  21. data/test/twin/default_test.rb +15 -15
  22. data/test/twin/expose_test.rb +15 -15
  23. data/test/twin/feature_test.rb +10 -10
  24. data/test/twin/from_collection_test.rb +4 -4
  25. data/test/twin/from_test.rb +3 -3
  26. data/test/twin/hash_test.rb +38 -38
  27. data/test/twin/inherit_test.rb +7 -7
  28. data/test/twin/inheritance_test.rb +6 -6
  29. data/test/twin/parent_test.rb +5 -5
  30. data/test/twin/property_processor_test.rb +3 -3
  31. data/test/twin/readable_test.rb +9 -9
  32. data/test/twin/save_test.rb +44 -44
  33. data/test/twin/setup_test.rb +25 -25
  34. data/test/twin/skip_unchanged_test.rb +6 -6
  35. data/test/twin/struct/coercion_test.rb +4 -4
  36. data/test/twin/struct_test.rb +41 -38
  37. data/test/twin/sync_test.rb +29 -29
  38. data/test/twin/twin_test.rb +14 -14
  39. data/test/twin/unnest_test.rb +7 -7
  40. data/test/twin/virtual_test.rb +3 -3
  41. data/test/twin/writeable_test.rb +8 -8
  42. metadata +3 -18
@@ -47,23 +47,23 @@ class TwinSyncTest < MiniTest::Spec
47
47
  fill_out!(twin)
48
48
 
49
49
  # not written to model, yet.
50
- album.name.must_be_nil
51
- album.songs[0].title.must_be_nil
52
- album.songs[1].title.must_be_nil
53
- album.songs[1].composer.name.must_be_nil
54
- album.artist.name.must_be_nil
50
+ expect(album.name).must_be_nil
51
+ expect(album.songs[0].title).must_be_nil
52
+ expect(album.songs[1].title).must_be_nil
53
+ expect(album.songs[1].composer.name).must_be_nil
54
+ expect(album.artist.name).must_be_nil
55
55
 
56
56
  twin.sync
57
57
 
58
- album.name.must_equal "Live And Dangerous"
59
- album.songs[0].must_be_instance_of Model::Song
60
- album.songs[1].must_be_instance_of Model::Song
61
- album.songs[0].title.must_equal "Southbound"
62
- album.songs[1].title.must_equal "The Boys Are Back In Town"
63
- album.songs[1].composer.must_be_instance_of Model::Artist
64
- album.songs[1].composer.name.must_equal "Lynott"
65
- album.artist.must_be_instance_of Model::Artist
66
- album.artist.name.must_equal "Thin Lizzy"
58
+ expect(album.name).must_equal "Live And Dangerous"
59
+ expect(album.songs[0]).must_be_instance_of Model::Song
60
+ expect(album.songs[1]).must_be_instance_of Model::Song
61
+ expect(album.songs[0].title).must_equal "Southbound"
62
+ expect(album.songs[1].title).must_equal "The Boys Are Back In Town"
63
+ expect(album.songs[1].composer).must_be_instance_of Model::Artist
64
+ expect(album.songs[1].composer.name).must_equal "Lynott"
65
+ expect(album.artist).must_be_instance_of Model::Artist
66
+ expect(album.artist.name).must_equal "Thin Lizzy"
67
67
  end
68
68
 
69
69
  # with empty, not populated model.
@@ -82,16 +82,16 @@ class TwinSyncTest < MiniTest::Spec
82
82
  twin.songs[1].composer.name = "Lynott"
83
83
 
84
84
  # not written to model, yet.
85
- album.name.must_be_nil
86
- album.songs.must_equal []
87
- album.artist.must_be_nil
85
+ expect(album.name).must_be_nil
86
+ expect(album.songs).must_equal []
87
+ expect(album.artist).must_be_nil
88
88
 
89
89
  twin.sync # this assigns a new collection via #songs=.
90
90
 
91
- album.name.must_equal "Live And Dangerous"
92
- album.songs[0].title.must_equal "Southbound"
93
- album.songs[1].title.must_equal "The Boys Are Back In Town"
94
- album.songs[1].composer.name.must_equal "Lynott"
91
+ expect(album.name).must_equal "Live And Dangerous"
92
+ expect(album.songs[0].title).must_equal "Southbound"
93
+ expect(album.songs[1].title).must_equal "The Boys Are Back In Town"
94
+ expect(album.songs[1].composer.name).must_equal "Lynott"
95
95
  end
96
96
 
97
97
  # save with block.
@@ -107,14 +107,14 @@ class TwinSyncTest < MiniTest::Spec
107
107
  nested_hash = hash
108
108
  end
109
109
 
110
- nested_hash.must_equal({"name"=>"Live And Dangerous", "songs"=>[{"title"=>"Southbound", "composer"=>nil}, {"title"=>"The Boys Are Back In Town", "composer"=>{"name"=>"Lynott"}}], "artist"=>{"name"=>"Thin Lizzy"}})
110
+ expect(nested_hash).must_equal({"name"=>"Live And Dangerous", "songs"=>[{"title"=>"Southbound", "composer"=>nil}, {"title"=>"The Boys Are Back In Town", "composer"=>{"name"=>"Lynott"}}], "artist"=>{"name"=>"Thin Lizzy"}})
111
111
 
112
112
  # nothing written to model.
113
- album.name.must_be_nil
114
- album.songs[0].title.must_be_nil
115
- album.songs[1].title.must_be_nil
116
- album.songs[1].composer.name.must_be_nil
117
- album.artist.name.must_be_nil
113
+ expect(album.name).must_be_nil
114
+ expect(album.songs[0].title).must_be_nil
115
+ expect(album.songs[1].title).must_be_nil
116
+ expect(album.songs[1].composer.name).must_be_nil
117
+ expect(album.artist.name).must_be_nil
118
118
  end
119
119
 
120
120
  describe "nil values" do
@@ -127,7 +127,7 @@ class TwinSyncTest < MiniTest::Spec
127
127
  nested_hash = nil
128
128
  twin.sync { |hash| nested_hash = hash }
129
129
 
130
- nested_hash.must_equal({"name"=>nil, "artist"=>nil})
130
+ expect(nested_hash).must_equal({"name"=>nil, "artist"=>nil})
131
131
  end
132
132
 
133
133
  it "includes empty collections" do
@@ -139,7 +139,7 @@ class TwinSyncTest < MiniTest::Spec
139
139
  nested_hash = nil
140
140
  twin.sync { |hash| nested_hash = hash }
141
141
 
142
- nested_hash.must_equal({"name"=>nil, "songs"=>[], "artist"=>nil})
142
+ expect(nested_hash).must_equal({"name"=>nil, "songs"=>[], "artist"=>nil})
143
143
  end
144
144
  end
145
145
  end
@@ -35,17 +35,17 @@ class TwinTest < MiniTest::Spec
35
35
  twin = Twin::Song.new(song)
36
36
  song.id = 2
37
37
  # :from maps public name
38
- twin.title.must_equal "Broken" # public: #record_name
39
- twin.id.must_equal 1
38
+ expect(twin.title).must_equal "Broken" # public: #record_name
39
+ expect(twin.id).must_equal 1
40
40
  end
41
41
 
42
42
  # allows passing options.
43
43
  it do
44
44
  # override twin's value...
45
- Twin::Song.new(song, :title => "Kenny").title.must_equal "Kenny"
45
+ expect(Twin::Song.new(song, :title => "Kenny").title).must_equal "Kenny"
46
46
 
47
47
  # .. but do not write to the model!
48
- song.title.must_equal "Broken"
48
+ expect(song.title).must_equal "Broken"
49
49
  end
50
50
  end
51
51
 
@@ -59,28 +59,28 @@ class TwinTest < MiniTest::Spec
59
59
  twin.album = album # this is a model, not a twin.
60
60
 
61
61
  # updates twin
62
- twin.id.must_equal 3
63
- twin.title.must_equal "Lucky"
62
+ expect(twin.id).must_equal 3
63
+ expect(twin.title).must_equal "Lucky"
64
64
 
65
65
  # setter for nested property will twin value.
66
66
  twin.album.extend(Disposable::Comparable)
67
- assert twin.album == Twin::Album.new(album) # FIXME: why does must_equal not call #== ?
67
+ assert twin.album == Twin::Album.new(album) # FIXME: why does) must_equal not call #== ?
68
68
 
69
69
  # setter for nested collection.
70
70
 
71
71
  # DOES NOT update model
72
- song.id.must_equal 1
73
- song.title.must_equal "Broken"
72
+ expect(song.id).must_equal 1
73
+ expect(song.title).must_equal "Broken"
74
74
  end
75
75
 
76
76
  describe "deleting" do
77
77
  it "allows overwriting nested twin with nil" do
78
78
  album = Model::Album.new(1, "Uncertain Terms", [], Model::Artist.new("Greg Howe"))
79
79
  twin = Twin::Album.new(album)
80
- twin.artist.id.must_equal "Greg Howe"
80
+ expect(twin.artist.id).must_equal "Greg Howe"
81
81
 
82
82
  twin.artist = nil
83
- twin.artist.must_be_nil
83
+ expect(twin.artist).must_be_nil
84
84
  end
85
85
  end
86
86
 
@@ -109,8 +109,8 @@ class OverridingAccessorsTest < TwinTest
109
109
  end
110
110
 
111
111
  let (:model) { Model::Song.new(1, "A Tale That Wasn't Right") }
112
- it { Song.new(model).title.must_equal "a tale that wasn't right" }
113
- it { Song.new(model).id.must_equal 2 }
112
+ it { expect(Song.new(model).title).must_equal "a tale that wasn't right" }
113
+ it { expect(Song.new(model).id).must_equal 2 }
114
114
  end
115
115
 
116
116
 
@@ -148,7 +148,7 @@ class AccessorsTest < Minitest::Spec
148
148
 
149
149
  it do
150
150
  twin = Twin.new(Song.new("bla"))
151
- twin.format.must_equal "bla"
151
+ expect(twin.format).must_equal "bla"
152
152
  twin.format = "blubb"
153
153
  end
154
154
  end
@@ -16,22 +16,22 @@ class UnnestTest < MiniTest::Spec
16
16
  end
17
17
 
18
18
  it "copies property option" do
19
- Twin.definitions.get(:id).extend(Declarative::Inspect).inspect.must_equal %{#<Disposable::Twin::Definition: @options={:nice=>\"yes\", :private_name=>:id, :name=>\"id\", :readable=>false, :writeable=>false}>}
20
- Twin.definitions.get(:ids).extend(Declarative::Inspect).inspect.must_equal %{#<Disposable::Twin::Definition: @options={:status=>\"healthy\", :collection=>true, :private_name=>:ids, :name=>\"ids\", :readable=>false, :writeable=>false}>}
19
+ expect(Twin.definitions.get(:id).extend(Declarative::Inspect).inspect).must_equal %{#<Disposable::Twin::Definition: @options={:nice=>\"yes\", :private_name=>:id, :name=>\"id\", :readable=>false, :writeable=>false}>}
20
+ expect(Twin.definitions.get(:ids).extend(Declarative::Inspect).inspect).must_equal %{#<Disposable::Twin::Definition: @options={:status=>\"healthy\", :collection=>true, :private_name=>:ids, :name=>\"ids\", :readable=>false, :writeable=>false}>}
21
21
  # also copies :nested.
22
- Twin.definitions.get(:email).extend(Declarative::Inspect).inspect.must_equal %{#<Disposable::Twin::Definition: @options={:private_name=>:email, :nested=>#<Class:>, :name=>\"email\", :readable=>false, :writeable=>false}>}
22
+ expect(Twin.definitions.get(:email).extend(Declarative::Inspect).inspect).must_equal %{#<Disposable::Twin::Definition: @options={:private_name=>:email, :nested=>#<Class:>, :name=>\"email\", :readable=>false, :writeable=>false}>}
23
23
  end
24
24
 
25
25
  it "exposes accessors on top-level twin" do
26
26
  twin = Twin.new(OpenStruct.new(content: OpenStruct.new()))
27
27
 
28
- twin.email.must_be_nil
28
+ expect(twin.email).must_be_nil
29
29
  twin.email= 2
30
- twin.email.model.must_equal 2
30
+ expect(twin.email.model).must_equal 2
31
31
 
32
32
 
33
- twin.id.must_be_nil
33
+ expect(twin.id).must_be_nil
34
34
  twin.id = 1
35
- twin.id.must_equal 1
35
+ expect(twin.id).must_equal 1
36
36
  end
37
37
  end
@@ -11,7 +11,7 @@ class VirtualTest < MiniTest::Spec
11
11
  it {
12
12
  twin.credit_card_number = "123"
13
13
 
14
- twin.credit_card_number.must_equal "123" # this is still readable in the UI.
14
+ expect(twin.credit_card_number).must_equal "123" # this is still readable in the UI.
15
15
 
16
16
  twin.sync
17
17
 
@@ -20,7 +20,7 @@ class VirtualTest < MiniTest::Spec
20
20
  hash = nested
21
21
  end
22
22
 
23
- hash.must_equal("credit_card_number"=> "123")
23
+ expect(hash).must_equal("credit_card_number"=> "123")
24
24
  }
25
25
 
26
26
  describe "setter should never be called with virtual:true" do
@@ -33,7 +33,7 @@ class VirtualTest < MiniTest::Spec
33
33
  end
34
34
 
35
35
  it "what" do
36
- Raising.new(Object.new).id.must_be_nil
36
+ expect(Raising.new(Object.new).id).must_be_nil
37
37
  end
38
38
  end
39
39
  end
@@ -30,20 +30,20 @@ class WriteableTest < MiniTest::Spec
30
30
  let (:twin) { PasswordForm.new(cred) }
31
31
 
32
32
  it {
33
- twin.password.must_equal "secret"
34
- twin.credit_card.name.must_equal "Jonny"
35
- twin.credit_card.number.must_equal "0987654321"
33
+ expect(twin.password).must_equal "secret"
34
+ expect(twin.credit_card.name).must_equal "Jonny"
35
+ expect(twin.credit_card.number).must_equal "0987654321"
36
36
 
37
37
  # manual setting on the twin works.
38
38
  twin.password = "123"
39
- twin.password.must_equal "123"
39
+ expect(twin.password).must_equal "123"
40
40
 
41
41
  twin.credit_card.number = "456"
42
- twin.credit_card.number.must_equal "456"
42
+ expect(twin.credit_card.number).must_equal "456"
43
43
 
44
44
  twin.sync
45
45
 
46
- cred.inspect.must_equal '#<struct WriteableTest::Credentials password="secret", credit_card=#<struct WriteableTest::CreditCard name="Jonny", number="0987654321">>'
46
+ expect(cred.inspect).must_equal '#<struct WriteableTest::Credentials password="secret", credit_card=#<struct WriteableTest::CreditCard name="Jonny", number="0987654321">>'
47
47
 
48
48
  # test sync{}.
49
49
  hash = {}
@@ -51,6 +51,6 @@ class WriteableTest < MiniTest::Spec
51
51
  hash = nested
52
52
  end
53
53
 
54
- hash.must_equal("password"=> "123", "credit_card"=>{"name"=>"Jonny", "number"=>"456"})
54
+ expect(hash).must_equal("password"=> "123", "credit_card"=>{"name"=>"Jonny", "number"=>"456"})
55
55
  }
56
- end
56
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disposable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-08 00:00:00.000000000 Z
11
+ date: 2020-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uber
@@ -148,20 +148,6 @@ dependencies:
148
148
  - - ">="
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
- - !ruby/object:Gem::Dependency
152
- name: sqlite3
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: 1.3.0
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: 1.3.0
165
151
  - !ruby/object:Gem::Dependency
166
152
  name: dry-types
167
153
  requirement: !ruby/object:Gem::Requirement
@@ -273,8 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
259
  - !ruby/object:Gem::Version
274
260
  version: '0'
275
261
  requirements: []
276
- rubyforge_project:
277
- rubygems_version: 2.7.6.2
262
+ rubygems_version: 3.0.6
278
263
  signing_key:
279
264
  specification_version: 4
280
265
  summary: Decorators on top of your ORM layer with change tracking, collection semantics