Commit 515e8ca82819ed85de1569799689b0a48a09c581

Authored by Tallys Martins
1 parent 8de4f2de

Improvements on template mirror blocks behaviour

- When a mirrored block is deleted, all blocks that follows the template are
also deleted

Signed-off-by: Tallys Martins <tallysmartins@yahoo.com.br>
Showing 2 changed files with 23 additions and 0 deletions   Show diff stats
app/models/block.rb
... ... @@ -32,6 +32,14 @@ class Block &lt; ActiveRecord::Base
32 32 end
33 33 end
34 34  
  35 + after_destroy do |block|
  36 + if block.owner.kind_of?(Profile) && block.owner.is_template? && block.mirror?
  37 + block.observers.each do |observer|
  38 + observer.destroy
  39 + end
  40 + end
  41 + end
  42 +
35 43 def embedable?
36 44 false
37 45 end
... ...
test/unit/block_test.rb
... ... @@ -361,4 +361,19 @@ class BlockTest &lt; ActiveSupport::TestCase
361 361 assert block.get_limit.is_a?(Fixnum)
362 362 end
363 363  
  364 + should 'destroy mirrored block when deleted from template' do
  365 + profile_template = create_user('test_template').person
  366 + profile_template.is_template = true
  367 + profile_template.save!
  368 +
  369 + template_block = create(RecentDocumentsBlock, :mirror => true, :title => 'template block')
  370 + mirrored_block = create(RecentDocumentsBlock, :mirror => false, :mirror_block_id => template_block, :title => 'mirrored block')
  371 + template_block.observers << mirrored_block
  372 +
  373 + template_block.stubs(:owner).returns(profile_template)
  374 + template_block.destroy!
  375 +
  376 + assert_nil RecentDocumentsBlock.find_by_id mirrored_block.id
  377 + end
  378 +
364 379 end
... ...