Commit 7fefda6ae0b3a0f21577762c047afa22a5cad114
1 parent
7e2cd9cf
Exists in
master
and in
22 other branches
Destroy children of container block when it was destroyed
Showing
2 changed files
with
18 additions
and
0 deletions
Show diff stats
plugins/container_block/lib/container_block.rb
| 1 | 1 | class ContainerBlock < Block |
| 2 | 2 | |
| 3 | 3 | after_create :create_box |
| 4 | + after_destroy :destroy_children | |
| 4 | 5 | |
| 5 | 6 | settings_items :container_box_id, :type => Integer, :default => nil |
| 6 | 7 | settings_items :children_settings, :type => Hash, :default => {} |
| ... | ... | @@ -17,6 +18,10 @@ class ContainerBlock < Block |
| 17 | 18 | nil |
| 18 | 19 | end |
| 19 | 20 | |
| 21 | + def destroy_children | |
| 22 | + blocks.destroy_all | |
| 23 | + end | |
| 24 | + | |
| 20 | 25 | def create_box |
| 21 | 26 | box = Box.create!(:owner => self) |
| 22 | 27 | settings[:container_box_id] = box.id | ... | ... |
plugins/container_block/test/unit/container_block_test.rb
| ... | ... | @@ -69,4 +69,17 @@ class ContainerBlockTest < ActiveSupport::TestCase |
| 69 | 69 | assert_equal nil, @block.layout_template |
| 70 | 70 | end |
| 71 | 71 | |
| 72 | + should 'return children blocks that have container box as box' do | |
| 73 | + @block.save! | |
| 74 | + child = Block.create!(:box_id => @block.container_box.id) | |
| 75 | + assert_equal [child], @block.blocks | |
| 76 | + end | |
| 77 | + | |
| 78 | + should 'destroy chilrend when container is removed' do | |
| 79 | + @block.save! | |
| 80 | + child = Block.create!(:box_id => @block.container_box.id) | |
| 81 | + @block.destroy | |
| 82 | + assert !Block.exists?(child.id) | |
| 83 | + end | |
| 84 | + | |
| 72 | 85 | end | ... | ... |