simple_model 1.2.25 → 1.2.26

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDRhM2I3NjM1YThmYzJkOTU5YzNlMTVkNjVmMDE3Y2E4OGRmOTMzOQ==
4
+ NDZkZTQzYzExYjM5MWRiMzhmZjViZGRkYjA5NDQ1MjcxY2M1NDE4YQ==
5
5
  data.tar.gz: !binary |-
6
- ZmRjNDE4M2MyZTI2M2VmZDQwNTczNmFjMjc5MGFiYmY2NmViYTc2MQ==
6
+ ODU0YTMzMWM4OTA0NGRlYWVkM2U1YTA2MTJhY2Q4MTQxNzc5YTE1NQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjNmMDVjYzIzYTcxMzUwYzFlZjcwNzgxYzgyZjU0NTg1ODk5NTZhYWM5OTJk
10
- NmE5ZGU1ZDAxZDBhMmNjZDU1NmE3YzcwMzRiZWM3OGFjMGVjMTY3YTQwM2M1
11
- ZDc1ZjI4ZDAwMGZmYWM3NWJmNmQwODZlZDc0ODBiNDFhYTEwN2E=
9
+ ZGM5YTJlY2I2NjU2Y2RkMmQ5MWY2MWJmNmMxNTQyOTdhZWQ1MzYxY2U0NGUy
10
+ OTQzZWZmN2RkNjg5NWIzMzUzZGM0YzBhYTMxNjk3ZTBhYWRmNjVkZmQwYjcz
11
+ YzFlY2VhZDE0ODM2YTExZmM0ODZlZDAyZTUzNzQ4OTc3MWQxYjU=
12
12
  data.tar.gz: !binary |-
13
- MDM4NTljY2IzOTRlNmVjMmZkNTM1NzJjNmI0NzA2Njc0OWVmMDBmMjlmMTk3
14
- YTczZTJjOGQ2ODQ0OTMxMWEwOTc5MzAyM2JkMjYxNDFlZWQ1MzY0Mjk3OTBh
15
- NTU2ZmU3NDlmMWJjYjRiNWM4MmIyZDJiZDYwNDY0ZDUxZjljZDU=
13
+ NGViMDY2YzUwYzhlYzdiZWNiMDFkNjg4NmY2MmY0NTc3YzMxN2QzN2E2ODgx
14
+ MDJlODJkM2VlMjkzYmY4MzJhNGQ4MzgyY2E4ZDZiYjcwZWU2Yzk3ZWIyOTFj
15
+ ZmZlMDgzYWQ5MDExNWUxZDYwMDE5ZGMzZDNiMWM3MzI3Y2EzNDQ=
@@ -39,11 +39,15 @@ module SimpleModel
39
39
  def set_attribute(attr,val)
40
40
  options = self.class.defined_attributes[attr] || {}
41
41
  if allow_attribute_action?(val,options)
42
- val = fetch_default_value(options[:default]) if (!options[:allow_blank] && options.key?(:default) && val.blank?)
43
- val = options[:on_set].call(self,val) if options[:on_set] #(!options.key?(:on_set) || (val.blank? && !options[:allow_blank]) )
44
- send("#{attr}_will_change!") if (initialized?(attr) && val != attributes[attr])
45
- attributes[attr] = val
46
- options[:after_set].call(self,val) if options[:after_set]
42
+ allow_blank = options[:allow_blank]
43
+ default = options[:default]
44
+ val = fetch_default_value(default) if (!allow_blank && default && val.blank?)
45
+ unless (val.blank? && !allow_blank)
46
+ val = options[:on_set].call(self,val) if options.key?(:on_set)
47
+ send("#{attr}_will_change!") if (initialized?(attr) && val != attributes[attr])
48
+ attributes[attr] = val
49
+ options[:after_set].call(self,val) if options[:after_set]
50
+ end
47
51
  end
48
52
  end
49
53
 
@@ -136,13 +140,13 @@ module SimpleModel
136
140
 
137
141
  module ClassMethods
138
142
  DEFAULT_ATTRIBUTE_SETTINGS = {:attributes_method => :attributes,
139
- :allow_blank => true,
143
+ :allow_blank => false,
140
144
  :initialize => true
141
145
  }.freeze
142
146
 
143
147
  AVAILABLE_ATTRIBUTE_METHODS = {
144
- :has_attribute => {:alias => :has_attributes},
145
- :has_boolean => {:cast_to => :to_b, :alias => :has_booleans},
148
+ :has_attribute => {:alias => :has_attributes, :options => {:allow_blank => true}},
149
+ :has_boolean => {:cast_to => :to_b, :alias => :has_booleans, :options => {:allow_blank => true}},
146
150
  :has_currency => {:cast_to => :to_d, :alias => :has_currencies},
147
151
  :has_date => {:cast_to => :to_date, :alias => :has_dates} ,
148
152
  :has_decimal => {:cast_to => :to_d, :alias => :has_decimals},
@@ -153,7 +157,9 @@ module SimpleModel
153
157
 
154
158
  AVAILABLE_ATTRIBUTE_METHODS.each do |method,method_options|
155
159
  define_method(method) do |*attributes|
156
- options = default_attribute_settings.merge(attributes.extract_options!)
160
+ options = attributes.extract_options!
161
+ options = method_options[:options].merge(options) if method_options[:options]
162
+ options = default_attribute_settings.merge(options)
157
163
  options[:on_set] = lambda {|obj,val| val.send(method_options[:cast_to]) } if method_options[:cast_to]
158
164
  create_attribute_methods(attributes,options)
159
165
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleModel
2
- VERSION = "1.2.25"
2
+ VERSION = "1.2.26"
3
3
  end
@@ -170,6 +170,50 @@ describe SimpleModel::Attributes do
170
170
  end
171
171
  end
172
172
 
173
+ context 'number and date/time attributes' do
174
+ before(:all) do
175
+ class NumDateTime
176
+ include SimpleModel::Attributes
177
+ has_date :my_date
178
+ has_time :my_time
179
+ has_int :my_int
180
+ has_int :blank_int, :allow_blank => true
181
+ has_decimal :my_decimal
182
+ has_decimal :blank_decimal, :allow_blank => true
183
+ has_float :my_float
184
+ has_attribute :my_attr
185
+ has_boolean :my_boolean
186
+ end
187
+ end
188
+ context "default options for number attributes" do
189
+ context "set with blank value" do
190
+ it "should not initialize" do
191
+ num_date_time = NumDateTime.new(:my_date => nil, :my_time => "", :my_int => " ", :my_decimal => nil, :my_float => '')
192
+ expect(num_date_time.initialized?(:my_date)).to eql(false)
193
+ expect(num_date_time.initialized?(:my_time)).to eql(false)
194
+ expect(num_date_time.initialized?(:my_int)).to eql(false)
195
+ expect(num_date_time.initialized?(:my_decimal)).to eql(false)
196
+ expect(num_date_time.initialized?(:my_float)).to eql(false)
197
+ end
198
+ end
199
+ context "override to allow_blank" do
200
+ it "should not initialize" do
201
+ num_date_time = NumDateTime.new(:blank_int => nil, :blank_decimal => "")
202
+ expect(num_date_time.initialized?(:blank_int)).to eql(true)
203
+ expect(num_date_time.initialized?(:blank_decimal)).to eql(true)
204
+ end
205
+ end
206
+ end
207
+
208
+ context "set with blank value" do
209
+ it "should not initialize" do
210
+ num_date_time = NumDateTime.new(:my_attr => nil, :my_boolean => "")
211
+ expect(num_date_time.initialized?(:my_attr)).to eql(true)
212
+ expect(num_date_time.initialized?(:my_boolean)).to eql(true)
213
+ end
214
+ end
215
+ end
216
+
173
217
  context 'options with conditional' do
174
218
  before(:all) do
175
219
  class WithConditional
@@ -277,9 +321,9 @@ describe SimpleModel::Attributes do
277
321
  end
278
322
 
279
323
  it "should properly alias attributes from parent class" do
280
- nb = NewestBase.new(:some_amount => 1.0)
281
- nb.other_amount.should eql(1.0.to_d)
282
- nb.amount.should eql(1.0.to_d)
324
+ nb = NewestBase.new(:some_amount => 1.0)
325
+ nb.other_amount.should eql(1.0.to_d)
326
+ nb.amount.should eql(1.0.to_d)
283
327
  end
284
328
  end
285
329
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.25
4
+ version: 1.2.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua T Mckinney
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-14 00:00:00.000000000 Z
11
+ date: 2014-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport