disposable 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
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