Commit 0af76ab383924eb64d48cb9963462c932b9cca09

Authored by AntonioTerceiro
1 parent b2673656

ActionItem231: fixed reference to unexisting (e.g. removed) article.


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1614 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/article_block.rb
... ... @@ -19,7 +19,14 @@ class ArticleBlock < Block
19 19 def article(reload = false)
20 20 @article = nil if reload
21 21 if @article || article_id
22   - @article = Article.find(article_id)
  22 + begin
  23 + @article = Article.find(article_id)
  24 + rescue ActiveRecord::RecordNotFound
  25 + # dangling reference, clear it
  26 + @article = nil
  27 + self.article_id = nil
  28 + self.save!
  29 + end
23 30 end
24 31 @article
25 32 end
... ...
test/unit/article_block_test.rb
... ... @@ -30,4 +30,26 @@ class ArticleBlockTest < Test::Unit::TestCase
30 30  
31 31 end
32 32  
  33 + should 'not crash when referenced article is removed' do
  34 + person = create_user('testuser').person
  35 + a = person.articles.create!(:name => 'test')
  36 + block = ArticleBlock.create(:article => a)
  37 + person.boxes.first.blocks << block
  38 + block.save!
  39 +
  40 + a.destroy
  41 + block.reload
  42 + assert_nil block.article
  43 + end
  44 +
  45 + should 'nullify reference to unexisting article' do
  46 + Article.delete_all
  47 +
  48 + block = ArticleBlock.new
  49 + block.article_id = 999
  50 +
  51 + block.article
  52 + assert_nil block.article_id
  53 + end
  54 +
33 55 end
... ...