Commit 4324e6fcba0f04cf9f779014e99e58a1739b2f50
1 parent
b1ce5ed3
Exists in
master
and in
29 other branches
r228@sede: terceiro | 2007-07-28 16:57:19 -0300
ActionItem0: bringing Block from old flexible_template git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@232 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
93 additions
and
0 deletions
Show diff stats
... | ... | @@ -0,0 +1,47 @@ |
1 | +module Design | |
2 | + | |
3 | + # Box ix the base class for most of the content elements. A Box is contaied | |
4 | + # by a Block, which may contain several blocks. | |
5 | + class Block < ActiveRecord::Base | |
6 | + | |
7 | + set_table_name 'design_blocks' | |
8 | + | |
9 | + belongs_to :box | |
10 | + | |
11 | + #<tt>position</tt> codl not be nil and must be an integer | |
12 | + validates_numericality_of :position, :only_integer => true | |
13 | + #TODO see the internationalization | |
14 | + #, :message => _('%{fn} must be composed only of integers') | |
15 | + | |
16 | + # A block must be associated to a box | |
17 | + validates_presence_of :box_id | |
18 | + | |
19 | + # This method always return false excepted when redefined by the MainBlock class. It mean the current block it's not the result of a | |
20 | + # controller action. | |
21 | + # | |
22 | + # The child class MainBlock subscribes this method returning true. | |
23 | + def main? | |
24 | + false | |
25 | + end | |
26 | + | |
27 | + # Method that define the content code displayed in the box. | |
28 | + # This method cannot be used directly it will be redefined by the children classes | |
29 | + def content | |
30 | + raise "This is a main class, don't use it" | |
31 | + end | |
32 | + | |
33 | + #TODO see if this method is needed | |
34 | + def self.children | |
35 | + @@block_children | |
36 | + end | |
37 | + | |
38 | + private | |
39 | + @@block_children = Array.new | |
40 | + | |
41 | + def self.inherited(subclass) | |
42 | + @@block_children.push(subclass.to_s) unless @@block_children.include? subclass.to_s | |
43 | + end | |
44 | + | |
45 | + end | |
46 | + | |
47 | +end # END OF module Design | ... | ... |
... | ... | @@ -0,0 +1,46 @@ |
1 | +require File.dirname(__FILE__) + '/test_helper' | |
2 | + | |
3 | +class BlockTest < Test::Unit::TestCase | |
4 | + | |
5 | + include Design | |
6 | + | |
7 | + def test_position_validation | |
8 | + b = Block.new | |
9 | + u = DesignTestUser.new | |
10 | + assert u.save | |
11 | + box = Box.new | |
12 | + box.owner = u | |
13 | + box.number = 1000 | |
14 | + assert box.save | |
15 | + b.box = box | |
16 | + assert !b.valid? | |
17 | + assert b.errors.invalid?(:position) | |
18 | + assert_equal 1, b.errors.length | |
19 | + end | |
20 | + | |
21 | + def test_box_validation | |
22 | + b = Block.new | |
23 | + b.position=1 | |
24 | + | |
25 | + assert !b.valid? | |
26 | + assert b.errors.invalid?(:box_id) | |
27 | + assert_equal 1, b.errors.length | |
28 | + | |
29 | + end | |
30 | + | |
31 | + def test_save | |
32 | + b = Block.new | |
33 | + b.position = 1000 | |
34 | + | |
35 | + u = DesignTestUser.new | |
36 | + assert u.save | |
37 | + box = Box.new | |
38 | + box.owner = u | |
39 | + box.number = 1000 | |
40 | + assert box.save | |
41 | + b.box = box | |
42 | + assert b.valid? | |
43 | + | |
44 | + end | |
45 | + | |
46 | +end | ... | ... |