disposable 0.4.3 → 0.5.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 +5 -5
- data/.github/workflows/ci.yml +29 -0
- data/.gitignore +1 -0
- data/CHANGES.md +23 -0
- data/Gemfile +5 -12
- data/README.md +2 -2
- data/disposable.gemspec +6 -9
- data/lib/disposable/rescheme.rb +1 -3
- data/lib/disposable/twin.rb +7 -0
- data/lib/disposable/twin/coercion.rb +11 -3
- data/lib/disposable/twin/default.rb +3 -3
- data/lib/disposable/twin/property/struct.rb +3 -1
- data/lib/disposable/twin/setup.rb +1 -1
- data/lib/disposable/twin/sync.rb +1 -1
- data/lib/disposable/version.rb +1 -1
- data/test/callback_group_test.rb +29 -30
- data/test/callbacks_test.rb +49 -49
- 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/test_helper.rb +9 -6
- data/test/twin/builder_test.rb +3 -3
- data/test/twin/changed_test.rb +38 -38
- data/test/twin/coercion_test.rb +75 -38
- data/test/twin/collection_test.rb +48 -48
- 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 +78 -31
- data/test/twin/inherit_test.rb +7 -7
- data/test/twin/inheritance_test.rb +6 -6
- data/test/twin/option_test.rb +1 -1
- data/test/twin/parent_test.rb +6 -6
- data/test/twin/property_processor_test.rb +5 -5
- 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 +36 -0
- data/test/twin/struct_test.rb +41 -38
- data/test/twin/sync_option_test.rb +2 -2
- data/test/twin/sync_test.rb +29 -29
- data/test/twin/twin_test.rb +25 -15
- 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 +25 -57
- data/.travis.yml +0 -13
- data/gemfiles/Gemfile.rails-2.3 +0 -7
- data/gemfiles/Gemfile.rails-3.0 +0 -7
- data/gemfiles/Gemfile.rails-3.2 +0 -7
- data/gemfiles/Gemfile.rails-4.0 +0 -8
- data/gemfiles/Gemfile.rails-4.1 +0 -7
@@ -58,7 +58,7 @@
|
|
58
58
|
# # Album#name :sync was called, first case.
|
59
59
|
# album.name.must_equal "processed+Run For Cover"
|
60
60
|
# # Song#title :sync called but returns nil.
|
61
|
-
# song.title.
|
61
|
+
# song.title.must_be_nil
|
62
62
|
# # Song#title :sync called and processed, first case.
|
63
63
|
# song_with_composer.title.must_equal "++Empty Rooms"
|
64
64
|
|
@@ -139,7 +139,7 @@
|
|
139
139
|
# # Album#name :sync was called, first case.
|
140
140
|
# album.name.must_equal "processed+Run For Cover"
|
141
141
|
# # Song#title :sync called but returns nil.
|
142
|
-
# song.title.
|
142
|
+
# song.title.must_be_nil
|
143
143
|
# # Song#title :sync called and processed, first case.
|
144
144
|
# #### song_with_composer.title.must_equal "++Empty Rooms"
|
145
145
|
|
data/test/twin/sync_test.rb
CHANGED
@@ -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.
|
51
|
-
album.songs[0].title.
|
52
|
-
album.songs[1].title.
|
53
|
-
album.songs[1].composer.name.
|
54
|
-
album.artist.name.
|
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.
|
86
|
-
album.songs.must_equal []
|
87
|
-
album.artist.
|
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.
|
114
|
-
album.songs[0].title.
|
115
|
-
album.songs[1].title.
|
116
|
-
album.songs[1].composer.name.
|
117
|
-
album.artist.name.
|
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
|
data/test/twin/twin_test.rb
CHANGED
@@ -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
|
-
album = Model::Album.new(1, "Uncertain Terms", [],
|
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.
|
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,17 @@ 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
|
155
|
+
|
156
|
+
class InvalidPropertyNameTest < Minitest::Spec
|
157
|
+
it 'raises InvalidPropertyNameError' do
|
158
|
+
assert_raises(Disposable::Twin::InvalidPropertyNameError) {
|
159
|
+
class Twin < Disposable::Twin
|
160
|
+
property :class
|
161
|
+
end
|
162
|
+
}
|
163
|
+
end
|
164
|
+
end
|
data/test/twin/unnest_test.rb
CHANGED
@@ -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.
|
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.
|
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
|
data/test/twin/virtual_test.rb
CHANGED
@@ -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.
|
36
|
+
expect(Raising.new(Object.new).id).must_be_nil
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
data/test/twin/writeable_test.rb
CHANGED
@@ -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
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: uber
|
@@ -48,28 +48,14 @@ dependencies:
|
|
48
48
|
name: declarative-builder
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 0.2.0
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "<"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 0.2.0
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: declarative-option
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "<"
|
51
|
+
- - "~>"
|
66
52
|
- !ruby/object:Gem::Version
|
67
53
|
version: 0.2.0
|
68
54
|
type: :runtime
|
69
55
|
prerelease: false
|
70
56
|
version_requirements: !ruby/object:Gem::Requirement
|
71
57
|
requirements:
|
72
|
-
- - "
|
58
|
+
- - "~>"
|
73
59
|
- !ruby/object:Gem::Version
|
74
60
|
version: 0.2.0
|
75
61
|
- !ruby/object:Gem::Dependency
|
@@ -78,34 +64,34 @@ dependencies:
|
|
78
64
|
requirements:
|
79
65
|
- - ">="
|
80
66
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
82
|
-
- - "
|
67
|
+
version: 3.1.1
|
68
|
+
- - "<"
|
83
69
|
- !ruby/object:Gem::Version
|
84
|
-
version: 3.
|
70
|
+
version: 3.2.0
|
85
71
|
type: :runtime
|
86
72
|
prerelease: false
|
87
73
|
version_requirements: !ruby/object:Gem::Requirement
|
88
74
|
requirements:
|
89
75
|
- - ">="
|
90
76
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
92
|
-
- - "
|
77
|
+
version: 3.1.1
|
78
|
+
- - "<"
|
93
79
|
- !ruby/object:Gem::Version
|
94
|
-
version: 3.
|
80
|
+
version: 3.2.0
|
95
81
|
- !ruby/object:Gem::Dependency
|
96
82
|
name: bundler
|
97
83
|
requirement: !ruby/object:Gem::Requirement
|
98
84
|
requirements:
|
99
|
-
- - "
|
85
|
+
- - ">="
|
100
86
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
87
|
+
version: '0'
|
102
88
|
type: :development
|
103
89
|
prerelease: false
|
104
90
|
version_requirements: !ruby/object:Gem::Requirement
|
105
91
|
requirements:
|
106
|
-
- - "
|
92
|
+
- - ">="
|
107
93
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
94
|
+
version: '0'
|
109
95
|
- !ruby/object:Gem::Dependency
|
110
96
|
name: rake
|
111
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,20 +122,6 @@ dependencies:
|
|
136
122
|
version: '0'
|
137
123
|
- !ruby/object:Gem::Dependency
|
138
124
|
name: activerecord
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
140
|
-
requirements:
|
141
|
-
- - '='
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: 4.2.5
|
144
|
-
type: :development
|
145
|
-
prerelease: false
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - '='
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: 4.2.5
|
151
|
-
- !ruby/object:Gem::Dependency
|
152
|
-
name: sqlite3
|
153
125
|
requirement: !ruby/object:Gem::Requirement
|
154
126
|
requirements:
|
155
127
|
- - ">="
|
@@ -166,16 +138,16 @@ dependencies:
|
|
166
138
|
name: dry-types
|
167
139
|
requirement: !ruby/object:Gem::Requirement
|
168
140
|
requirements:
|
169
|
-
- - "
|
141
|
+
- - ">="
|
170
142
|
- !ruby/object:Gem::Version
|
171
|
-
version: '0
|
143
|
+
version: '0'
|
172
144
|
type: :development
|
173
145
|
prerelease: false
|
174
146
|
version_requirements: !ruby/object:Gem::Requirement
|
175
147
|
requirements:
|
176
|
-
- - "
|
148
|
+
- - ">="
|
177
149
|
- !ruby/object:Gem::Version
|
178
|
-
version: '0
|
150
|
+
version: '0'
|
179
151
|
description: Decorators on top of your ORM layer.
|
180
152
|
email:
|
181
153
|
- apotonick@gmail.com
|
@@ -183,19 +155,14 @@ executables: []
|
|
183
155
|
extensions: []
|
184
156
|
extra_rdoc_files: []
|
185
157
|
files:
|
158
|
+
- ".github/workflows/ci.yml"
|
186
159
|
- ".gitignore"
|
187
|
-
- ".travis.yml"
|
188
160
|
- CHANGES.md
|
189
161
|
- Gemfile
|
190
162
|
- LICENSE.txt
|
191
163
|
- README.md
|
192
164
|
- Rakefile
|
193
165
|
- disposable.gemspec
|
194
|
-
- gemfiles/Gemfile.rails-2.3
|
195
|
-
- gemfiles/Gemfile.rails-3.0
|
196
|
-
- gemfiles/Gemfile.rails-3.2
|
197
|
-
- gemfiles/Gemfile.rails-4.0
|
198
|
-
- gemfiles/Gemfile.rails-4.1
|
199
166
|
- lib/disposable.rb
|
200
167
|
- lib/disposable/callback.rb
|
201
168
|
- lib/disposable/composition.rb
|
@@ -251,6 +218,7 @@ files:
|
|
251
218
|
- test/twin/save_test.rb
|
252
219
|
- test/twin/setup_test.rb
|
253
220
|
- test/twin/skip_unchanged_test.rb
|
221
|
+
- test/twin/struct/coercion_test.rb
|
254
222
|
- test/twin/struct_test.rb
|
255
223
|
- test/twin/sync_option_test.rb
|
256
224
|
- test/twin/sync_test.rb
|
@@ -262,7 +230,7 @@ homepage: https://github.com/apotonick/disposable
|
|
262
230
|
licenses:
|
263
231
|
- MIT
|
264
232
|
metadata: {}
|
265
|
-
post_install_message:
|
233
|
+
post_install_message:
|
266
234
|
rdoc_options: []
|
267
235
|
require_paths:
|
268
236
|
- lib
|
@@ -277,9 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
277
245
|
- !ruby/object:Gem::Version
|
278
246
|
version: '0'
|
279
247
|
requirements: []
|
280
|
-
|
281
|
-
|
282
|
-
signing_key:
|
248
|
+
rubygems_version: 3.0.8
|
249
|
+
signing_key:
|
283
250
|
specification_version: 4
|
284
251
|
summary: Decorators on top of your ORM layer with change tracking, collection semantics
|
285
252
|
and nesting.
|
@@ -315,6 +282,7 @@ test_files:
|
|
315
282
|
- test/twin/save_test.rb
|
316
283
|
- test/twin/setup_test.rb
|
317
284
|
- test/twin/skip_unchanged_test.rb
|
285
|
+
- test/twin/struct/coercion_test.rb
|
318
286
|
- test/twin/struct_test.rb
|
319
287
|
- test/twin/sync_option_test.rb
|
320
288
|
- test/twin/sync_test.rb
|