active_type 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/gemfiles/Gemfile.3.2.lock +1 -1
- data/gemfiles/Gemfile.4.0.lock +1 -1
- data/gemfiles/Gemfile.4.1.lock +1 -1
- data/lib/active_type/extended_record.rb +0 -1
- data/lib/active_type/no_table.rb +4 -0
- data/lib/active_type/version.rb +1 -1
- data/lib/active_type/virtual_attributes.rb +20 -0
- data/spec/active_type/extended_record_spec.rb +51 -0
- data/spec/active_type/object_spec.rb +84 -0
- data/spec/active_type/record_spec.rb +25 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 246d6b642fc001e5a1df57b9c4cd42e20a6fe68c
|
4
|
+
data.tar.gz: dbce1038dc7d9d74d6258927e0e3a1bfb995af70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68925ab89dbead458c046fcdea66fc7493e16e616af15aec2647c5800851f7bc6db00fc1f61077aadabebf310b1a52dec2c84e8f64c37aa012c0886173c5e5d4
|
7
|
+
data.tar.gz: e7dd74a94787288cc37b6dadfbae1f4e3451cb6707c4733cd6e1dd357bc906b8bc323fe08102b7824d9661fee7d0fb57b6dc6a9e642618233f1f5514920233ac
|
data/gemfiles/Gemfile.3.2.lock
CHANGED
data/gemfiles/Gemfile.4.0.lock
CHANGED
data/gemfiles/Gemfile.4.1.lock
CHANGED
data/lib/active_type/no_table.rb
CHANGED
data/lib/active_type/version.rb
CHANGED
@@ -64,6 +64,10 @@ module ActiveType
|
|
64
64
|
def #{name}
|
65
65
|
read_virtual_attribute('#{name}')
|
66
66
|
end
|
67
|
+
|
68
|
+
def #{name}?
|
69
|
+
read_virtual_attribute('#{name}').present?
|
70
|
+
end
|
67
71
|
BODY
|
68
72
|
end
|
69
73
|
|
@@ -113,6 +117,12 @@ module ActiveType
|
|
113
117
|
end
|
114
118
|
end
|
115
119
|
|
120
|
+
def attributes
|
121
|
+
self.class._virtual_column_names.each_with_object(super) do |name, attrs|
|
122
|
+
attrs[name] = read_virtual_attribute(name)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
116
126
|
def read_virtual_attribute(name)
|
117
127
|
name = name.to_s
|
118
128
|
@virtual_attributes_cache[name] ||= begin
|
@@ -138,6 +148,16 @@ module ActiveType
|
|
138
148
|
end
|
139
149
|
end
|
140
150
|
|
151
|
+
def _virtual_column_names
|
152
|
+
@virtual_column_names ||= begin
|
153
|
+
names = virtual_columns_hash.keys
|
154
|
+
if defined?(super)
|
155
|
+
names += super
|
156
|
+
end
|
157
|
+
names
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
141
161
|
def _has_virtual_column?(name)
|
142
162
|
virtual_columns_hash.has_key?(name.to_s) || begin
|
143
163
|
if defined?(super)
|
@@ -44,6 +44,25 @@ describe "ActiveType::Record[ActiveRecord::Base]" do
|
|
44
44
|
it_should_behave_like 'ActiveRecord-like constructors', { :persisted_string => "persisted string", :another_virtual_string => "another virtual string" }
|
45
45
|
end
|
46
46
|
|
47
|
+
describe '#attributes' do
|
48
|
+
|
49
|
+
it 'returns a hash of virtual and persisted attributes' do
|
50
|
+
subject.persisted_string = "string"
|
51
|
+
subject.another_virtual_string = "string"
|
52
|
+
|
53
|
+
subject.attributes.should == {
|
54
|
+
"another_virtual_string" => "string",
|
55
|
+
"id" => nil,
|
56
|
+
"persisted_string" => "string",
|
57
|
+
"persisted_integer" => nil,
|
58
|
+
"persisted_time" => nil,
|
59
|
+
"persisted_date" => nil,
|
60
|
+
"persisted_boolean" => nil
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
47
66
|
describe 'accessors' do
|
48
67
|
it_should_behave_like 'ActiveRecord-like accessors', { :persisted_string => "persisted string", :another_virtual_string => "another virtual string" }
|
49
68
|
end
|
@@ -65,6 +84,12 @@ describe "ActiveType::Record[ActiveRecord::Base]" do
|
|
65
84
|
end
|
66
85
|
end
|
67
86
|
|
87
|
+
describe '.base_class' do
|
88
|
+
it 'is the base class inherited from' do
|
89
|
+
subject.class.base_class.should == ExtendedRecordSpec::BaseRecord
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
68
93
|
end
|
69
94
|
|
70
95
|
|
@@ -86,6 +111,26 @@ describe "ActiveType::Record[ActiveType::Record]" do
|
|
86
111
|
it_should_behave_like 'ActiveRecord-like constructors', { :persisted_string => "persisted string", :virtual_string => "virtual string", :another_virtual_string => "another virtual string" }
|
87
112
|
end
|
88
113
|
|
114
|
+
describe '#attributes' do
|
115
|
+
|
116
|
+
it 'returns a hash of virtual and persisted attributes' do
|
117
|
+
subject.persisted_string = "string"
|
118
|
+
subject.virtual_string = "string"
|
119
|
+
|
120
|
+
subject.attributes.should == {
|
121
|
+
"virtual_string" => "string",
|
122
|
+
"another_virtual_string" => nil,
|
123
|
+
"id" => nil,
|
124
|
+
"persisted_string" => "string",
|
125
|
+
"persisted_integer" => nil,
|
126
|
+
"persisted_time" => nil,
|
127
|
+
"persisted_date" => nil,
|
128
|
+
"persisted_boolean" => nil
|
129
|
+
}
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
89
134
|
describe 'accessors' do
|
90
135
|
it_should_behave_like 'ActiveRecord-like accessors', { :persisted_string => "persisted string", :virtual_string => "virtual string", :another_virtual_string => "another virtual string" }
|
91
136
|
end
|
@@ -115,4 +160,10 @@ describe "ActiveType::Record[ActiveType::Record]" do
|
|
115
160
|
end
|
116
161
|
end
|
117
162
|
|
163
|
+
describe '.base_class' do
|
164
|
+
it 'is the base class inherited from' do
|
165
|
+
subject.class.base_class.should == ExtendedRecordSpec::BaseActiveTypeRecord
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
118
169
|
end
|
@@ -149,6 +149,90 @@ describe ActiveType::Object do
|
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
+
describe 'query methods' do
|
153
|
+
|
154
|
+
it 'returns true for true' do
|
155
|
+
subject.virtual_attribute = true
|
156
|
+
|
157
|
+
subject.virtual_attribute?.should == true
|
158
|
+
end
|
159
|
+
|
160
|
+
it 'returns false for false' do
|
161
|
+
subject.virtual_attribute = false
|
162
|
+
|
163
|
+
subject.virtual_attribute?.should == false
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'returns false for nil' do
|
167
|
+
subject.virtual_attribute = nil
|
168
|
+
|
169
|
+
subject.virtual_attribute?.should == false
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'returns true for 1' do
|
173
|
+
subject.virtual_attribute = 1
|
174
|
+
|
175
|
+
subject.virtual_attribute?.should == true
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'returns true for an object' do
|
179
|
+
subject.virtual_attribute = Object.new
|
180
|
+
|
181
|
+
subject.virtual_attribute?.should == true
|
182
|
+
end
|
183
|
+
|
184
|
+
end
|
185
|
+
|
186
|
+
describe '#attributes' do
|
187
|
+
|
188
|
+
it 'returns a hash of virtual attributes' do
|
189
|
+
subject.virtual_string = "string"
|
190
|
+
subject.virtual_integer = "17"
|
191
|
+
|
192
|
+
subject.attributes.should == {
|
193
|
+
"virtual_string" => "string",
|
194
|
+
"virtual_integer" => 17,
|
195
|
+
"virtual_time" => nil,
|
196
|
+
"virtual_date" => nil,
|
197
|
+
"virtual_boolean" => nil,
|
198
|
+
"virtual_attribute" => nil,
|
199
|
+
}
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'also includes inherited attributes' do
|
203
|
+
object = ObjectSpec::InheritingObject.new
|
204
|
+
object.virtual_string = "string"
|
205
|
+
object.virtual_integer = "17"
|
206
|
+
|
207
|
+
object.attributes.should == {
|
208
|
+
"virtual_string" => "string",
|
209
|
+
"virtual_integer" => 17,
|
210
|
+
"virtual_time" => nil,
|
211
|
+
"virtual_date" => nil,
|
212
|
+
"virtual_boolean" => nil,
|
213
|
+
"virtual_attribute" => nil,
|
214
|
+
"another_virtual_string" => nil,
|
215
|
+
}
|
216
|
+
end
|
217
|
+
|
218
|
+
it 'also includes included attributes' do
|
219
|
+
object = ObjectSpec::IncludingObject.new
|
220
|
+
object.virtual_string = "string"
|
221
|
+
object.virtual_integer = "17"
|
222
|
+
|
223
|
+
object.attributes.should == {
|
224
|
+
"virtual_string" => "string",
|
225
|
+
"virtual_integer" => 17,
|
226
|
+
"virtual_time" => nil,
|
227
|
+
"virtual_date" => nil,
|
228
|
+
"virtual_boolean" => nil,
|
229
|
+
"virtual_attribute" => nil,
|
230
|
+
"another_virtual_string" => nil,
|
231
|
+
}
|
232
|
+
end
|
233
|
+
|
234
|
+
end
|
235
|
+
|
152
236
|
describe 'inherited classes' do
|
153
237
|
|
154
238
|
it 'sees attributes of both classes' do
|
@@ -140,6 +140,31 @@ describe ActiveType::Record do
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
+
describe '#attributes' do
|
144
|
+
|
145
|
+
it 'returns a hash of virtual and persisted attributes' do
|
146
|
+
subject.persisted_string = "string"
|
147
|
+
subject.virtual_string = "string"
|
148
|
+
subject.virtual_integer = "17"
|
149
|
+
|
150
|
+
subject.attributes.should == {
|
151
|
+
"virtual_string" => "string",
|
152
|
+
"virtual_integer" => 17,
|
153
|
+
"virtual_time" => nil,
|
154
|
+
"virtual_date" => nil,
|
155
|
+
"virtual_boolean" => nil,
|
156
|
+
"virtual_attribute" => nil,
|
157
|
+
"id" => nil,
|
158
|
+
"persisted_string" => "string",
|
159
|
+
"persisted_integer" => nil,
|
160
|
+
"persisted_time" => nil,
|
161
|
+
"persisted_date" => nil,
|
162
|
+
"persisted_boolean" => nil
|
163
|
+
}
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
143
168
|
describe 'validations' do
|
144
169
|
subject { RecordSpec::RecordWithValidations.new }
|
145
170
|
|