disposable 0.1.1 → 0.1.2
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/CHANGES.md +4 -0
- data/database.sqlite3 +0 -0
- data/lib/disposable/twin.rb +10 -0
- data/lib/disposable/twin/changed.rb +1 -1
- data/lib/disposable/version.rb +1 -1
- data/test/skip_getter_test.rb +84 -0
- metadata +1 -3
- data/test/skip_setter_test.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 344f81de5499edef8813bf4f4c20d4b39e8b351f
|
4
|
+
data.tar.gz: 1e2a2305010b56e2f6a285a704206a54d6f6fb0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ae1f63242b61ca78b801762a36caeff71c292e83a146478e60916b5fac3a072879296dcee95c7dbe06a3b146a7f533613fd32bb9a4deb7ff7ceb287535163d1
|
7
|
+
data.tar.gz: e9d20cb50187ead62ff6a58ed89e4598e74168ab7d49a9edf857d0d46e683c521e616e448a76b66fdc341c41217067bd3b7b1b0b9c954f2af5d273a35d47e974
|
data/CHANGES.md
CHANGED
data/database.sqlite3
CHANGED
Binary file
|
data/lib/disposable/twin.rb
CHANGED
@@ -80,9 +80,19 @@ module Disposable
|
|
80
80
|
return if dfn[:twin] and value.nil? # TODO: test me (model.composer => nil)
|
81
81
|
value = dfn.array? ? wrap_collection(dfn, value) : wrap_scalar(dfn, value) if dfn[:twin]
|
82
82
|
|
83
|
+
field_write(name, value)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Write the property's value without using the public writer.
|
87
|
+
def field_write(name, value)
|
83
88
|
@fields[name.to_s] = value
|
84
89
|
end
|
85
90
|
|
91
|
+
# Read the property's value without using the public reader.
|
92
|
+
def field_read(name)
|
93
|
+
@fields[name.to_s]
|
94
|
+
end
|
95
|
+
|
86
96
|
def wrap_scalar(dfn, value)
|
87
97
|
Twinner.new(dfn).(value)
|
88
98
|
end
|
data/lib/disposable/version.rb
CHANGED
data/test/skip_getter_test.rb
CHANGED
@@ -34,4 +34,88 @@ class SkipGetterTest < MiniTest::Spec
|
|
34
34
|
album.title.must_equal "Wild Frontier"
|
35
35
|
album.artist.name.must_equal "Gary Moore"
|
36
36
|
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
class SkipSetterTest < MiniTest::Spec
|
41
|
+
Album = Struct.new(:title, :artist)
|
42
|
+
Artist = Struct.new(:name)
|
43
|
+
|
44
|
+
class AlbumTwin < Disposable::Twin
|
45
|
+
feature Setup::SkipSetter
|
46
|
+
|
47
|
+
property :title
|
48
|
+
property :artist do
|
49
|
+
property :name
|
50
|
+
|
51
|
+
def name=(v)
|
52
|
+
super(v.upcase)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def title=(v)
|
57
|
+
super(v.reverse)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it do
|
62
|
+
twin = AlbumTwin.new(Album.new("Wild Frontier", Artist.new("Gary Moore")))
|
63
|
+
|
64
|
+
twin.title.must_equal "Wild Frontier"
|
65
|
+
twin.artist.name.must_equal "Gary Moore"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
class SkipGetterAndSetterWithChangedTest < MiniTest::Spec
|
71
|
+
Album = Struct.new(:title, :artist)
|
72
|
+
Artist = Struct.new(:name)
|
73
|
+
|
74
|
+
class AlbumTwin < Disposable::Twin
|
75
|
+
feature Sync
|
76
|
+
feature Sync::SkipGetter
|
77
|
+
feature Setup::SkipSetter
|
78
|
+
feature Changed
|
79
|
+
|
80
|
+
property :title
|
81
|
+
property :artist do
|
82
|
+
property :name
|
83
|
+
|
84
|
+
def name
|
85
|
+
super.upcase
|
86
|
+
end
|
87
|
+
|
88
|
+
def name=(v)
|
89
|
+
super v.chop
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def title
|
94
|
+
super.reverse
|
95
|
+
end
|
96
|
+
|
97
|
+
def title=(v)
|
98
|
+
super v.reverse
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
it do
|
103
|
+
album = Album.new("Wild Frontier", Artist.new("Gary Moore"))
|
104
|
+
twin = AlbumTwin.new(album) # does not call getter (Changed).
|
105
|
+
|
106
|
+
|
107
|
+
twin.title.must_equal "reitnorF dliW"
|
108
|
+
twin.artist.name.must_equal "GARY MOORE"
|
109
|
+
|
110
|
+
twin.changed?.must_equal false
|
111
|
+
twin.artist.changed?.must_equal false
|
112
|
+
|
113
|
+
twin.title = "Self-Entitled"
|
114
|
+
twin.artist.name = "Nofx"
|
115
|
+
|
116
|
+
twin.sync # does NOT call getter.
|
117
|
+
|
118
|
+
album.title.must_equal "deltitnE-fleS"
|
119
|
+
album.artist.name.must_equal "Nof"
|
120
|
+
end
|
37
121
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: disposable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
@@ -166,7 +166,6 @@ files:
|
|
166
166
|
- test/expose_test.rb
|
167
167
|
- test/persisted_test.rb
|
168
168
|
- test/skip_getter_test.rb
|
169
|
-
- test/skip_setter_test.rb
|
170
169
|
- test/test_helper.rb
|
171
170
|
- test/twin/benchmarking.rb
|
172
171
|
- test/twin/builder_test.rb
|
@@ -221,7 +220,6 @@ test_files:
|
|
221
220
|
- test/expose_test.rb
|
222
221
|
- test/persisted_test.rb
|
223
222
|
- test/skip_getter_test.rb
|
224
|
-
- test/skip_setter_test.rb
|
225
223
|
- test/test_helper.rb
|
226
224
|
- test/twin/benchmarking.rb
|
227
225
|
- test/twin/builder_test.rb
|
data/test/skip_setter_test.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class SkipSetterTest < MiniTest::Spec
|
4
|
-
Album = Struct.new(:title, :artist)
|
5
|
-
Artist = Struct.new(:name)
|
6
|
-
|
7
|
-
class AlbumTwin < Disposable::Twin
|
8
|
-
feature Setup::SkipSetter
|
9
|
-
|
10
|
-
property :title
|
11
|
-
property :artist do
|
12
|
-
property :name
|
13
|
-
|
14
|
-
def name=(v)
|
15
|
-
super(v.upcase)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def title=(v)
|
20
|
-
super(v.reverse)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
it do
|
25
|
-
twin = AlbumTwin.new(Album.new("Wild Frontier", Artist.new("Gary Moore")))
|
26
|
-
|
27
|
-
twin.title.must_equal "Wild Frontier"
|
28
|
-
twin.artist.name.must_equal "Gary Moore"
|
29
|
-
end
|
30
|
-
end
|