diff --git a/plugins/display_content/lib/display_content_block.rb b/plugins/display_content/lib/display_content_block.rb index ace958a..8433053 100644 --- a/plugins/display_content/lib/display_content_block.rb +++ b/plugins/display_content/lib/display_content_block.rb @@ -56,7 +56,7 @@ class DisplayContentBlock < Block end def parent_nodes - @parent_nodes ||= self.holder.articles.find(nodes).map { |article| get_parent(article) }.compact.flatten + @parent_nodes ||= self.holder.articles.where(:id => nodes).map { |article| get_parent(article) }.compact.flatten end VALID_CONTENT = ['RawHTMLArticle', 'TextArticle', 'TextileArticle', 'TinyMceArticle', 'Folder', 'Blog', 'Forum'] diff --git a/plugins/display_content/test/unit/display_content_block_test.rb b/plugins/display_content/test/unit/display_content_block_test.rb index ae1f35f..873e4ad 100644 --- a/plugins/display_content/test/unit/display_content_block_test.rb +++ b/plugins/display_content/test/unit/display_content_block_test.rb @@ -557,4 +557,19 @@ class DisplayContentBlockTest < ActiveSupport::TestCase assert_equal [a1], block.articles_of_parent end + should 'do not fail if a selected article was removed' do + profile = create_user('testuser').person + Article.delete_all + f1 = fast_create(Folder, :name => 'test folder 1', :profile_id => profile.id) + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => f1.id) + + checked_articles= {a1.id => true} + + block = DisplayContentBlock.new + block.stubs(:holder).returns(profile) + block.checked_nodes= checked_articles + a1.destroy + assert_equal [], block.parent_nodes + end + end -- libgit2 0.21.2