Commit fd983d96da8ef7f90dedbe1ee09ba8d75e9df22a

Authored by AntonioTerceiro
1 parent 976dd94a

ActionItem152: blocks can declare settings items


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1261 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing 2 changed files with 30 additions and 0 deletions   Show diff stats
app/models/block.rb
... ... @@ -11,6 +11,17 @@ class Block < ActiveRecord::Base
11 11 self[:settings] ||= Hash.new
12 12 end
13 13  
  14 + def self.settings_item(name)
  15 + class_eval <<-CODE
  16 + def #{name}
  17 + settings[:#{name}]
  18 + end
  19 + def #{name}=(value)
  20 + settings[:#{name}] = value
  21 + end
  22 + CODE
  23 + end
  24 +
14 25 def self.description
15 26 _('A dummy block.')
16 27 end
... ...
test/unit/block_test.rb
... ... @@ -32,4 +32,23 @@ class BlockTest &lt; Test::Unit::TestCase
32 32 assert_nil Block.new.owner
33 33 end
34 34  
  35 + should 'be able to declare settings items' do
  36 + block_class = Class.new(Block)
  37 +
  38 + block = block_class.new
  39 + assert !block.respond_to?(:limit)
  40 + assert !block.respond_to?(:limit=)
  41 +
  42 + block_class.settings_item :limit
  43 +
  44 + assert_respond_to block, :limit
  45 + assert_respond_to block, :limit=
  46 +
  47 + assert_nil block.limit
  48 + block.limit = 10
  49 + assert_equal 10, block.limit
  50 +
  51 + assert_equal({ :limit => 10}, block.settings)
  52 + end
  53 +
35 54 end
... ...