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 21 def settings_items(*names)
22 22  
23 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 26 names.each do |setting|
27 27 class_eval <<-CODE
28 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 31 end
31 32 def #{setting}=(value)
32 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 48 assert_equal 10, block_class.new.some_setting
49 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 59 end
... ...