diff --git a/plugins/container_block/lib/container_block.rb b/plugins/container_block/lib/container_block.rb index fcffbc9..be88188 100644 --- a/plugins/container_block/lib/container_block.rb +++ b/plugins/container_block/lib/container_block.rb @@ -1,6 +1,7 @@ class ContainerBlock < Block after_create :create_box + after_destroy :destroy_children settings_items :container_box_id, :type => Integer, :default => nil settings_items :children_settings, :type => Hash, :default => {} @@ -17,6 +18,10 @@ class ContainerBlock < Block nil end + def destroy_children + blocks.destroy_all + end + def create_box box = Box.create!(:owner => self) settings[:container_box_id] = box.id diff --git a/plugins/container_block/test/unit/container_block_test.rb b/plugins/container_block/test/unit/container_block_test.rb index 28cd5fa..ca90a22 100644 --- a/plugins/container_block/test/unit/container_block_test.rb +++ b/plugins/container_block/test/unit/container_block_test.rb @@ -69,4 +69,17 @@ class ContainerBlockTest < ActiveSupport::TestCase assert_equal nil, @block.layout_template end + should 'return children blocks that have container box as box' do + @block.save! + child = Block.create!(:box_id => @block.container_box.id) + assert_equal [child], @block.blocks + end + + should 'destroy chilrend when container is removed' do + @block.save! + child = Block.create!(:box_id => @block.container_box.id) + @block.destroy + assert !Block.exists?(child.id) + end + end -- libgit2 0.21.2