Commit a32920024e1e99d544b91a5c8142e1eafaef8086

Authored by AntonioTerceiro
1 parent 5b598267

ActionItem393: must be able to set settings to false (only a nil value

implies using the informed default)


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1799 3f533792-8f58-4932-b0fe-aaf55b0a4547
lib/acts_as_having_settings.rb
@@ -21,12 +21,13 @@ module ActsAsHavingSettings @@ -21,12 +21,13 @@ module ActsAsHavingSettings
21 def settings_items(*names) 21 def settings_items(*names)
22 22
23 options = names.last.is_a?(Hash) ? names.pop : {} 23 options = names.last.is_a?(Hash) ? names.pop : {}
24 - default = options[:default] ? "|| #{options[:default].inspect}" : "" 24 + default = options[:default] ? options[:default].inspect : "val"
25 25
26 names.each do |setting| 26 names.each do |setting|
27 class_eval <<-CODE 27 class_eval <<-CODE
28 def #{setting} 28 def #{setting}
29 - send(self.class.settings_field)[:#{setting}] #{default} 29 + val = send(self.class.settings_field)[:#{setting}]
  30 + val.nil? ? #{default} : val
30 end 31 end
31 def #{setting}=(value) 32 def #{setting}=(value)
32 send(self.class.settings_field)[:#{setting}] = value 33 send(self.class.settings_field)[:#{setting}] = value
test/unit/acts_as_having_settings_test.rb
@@ -48,4 +48,12 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase @@ -48,4 +48,12 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase
48 assert_equal 10, block_class.new.some_setting 48 assert_equal 10, block_class.new.some_setting
49 end 49 end
50 50
  51 + should 'be able to set boolean attributes to false with a default of true' do
  52 + klass = Class.new(Block)
  53 + klass.settings_items :flag, :default => true
  54 + obj = klass.new
  55 + obj.flag = false
  56 + assert_equal false, obj.flag
  57 + end
  58 +
51 end 59 end