Commit 46095aa0e2b0e02d11d6e7899c527b79311071a7

Authored by Leandro Nunes dos Santos
1 parent 7e9327d0

Show only text article and folders on tree content

plugins/display_content/lib/display_content_block.rb
@@ -18,6 +18,7 @@ class DisplayContentBlock < Block @@ -18,6 +18,7 @@ class DisplayContentBlock < Block
18 self.holder.articles.find(params.keys).map do |article| 18 self.holder.articles.find(params.keys).map do |article|
19 if article.folder? 19 if article.folder?
20 articles = articles + article.children 20 articles = articles + article.children
  21 + parent_articles << article.id
21 else 22 else
22 articles<< article 23 articles<< article
23 end 24 end
@@ -27,9 +28,11 @@ class DisplayContentBlock &lt; Block @@ -27,9 +28,11 @@ class DisplayContentBlock &lt; Block
27 self.nodes = articles.map{|a| a.id if a.is_a?(TextArticle) }.compact 28 self.nodes = articles.map{|a| a.id if a.is_a?(TextArticle) }.compact
28 end 29 end
29 30
  31 + VALID_CONTENT = ['RawHTMLArticle', 'TextArticle', 'TextileArticle', 'TinyMceArticle', 'Folder', 'Blog', 'Forum']
  32 +
30 def articles_of_parent(parent = nil) 33 def articles_of_parent(parent = nil)
31 return [] if self.holder.nil? 34 return [] if self.holder.nil?
32 - holder.articles.find(:all, :conditions => {:parent_id => parent.nil? ? nil : parent}) 35 + holder.articles.find(:all, :conditions => {:type => VALID_CONTENT, :parent_id => (parent.nil? ? nil : parent)})
33 end 36 end
34 37
35 include ActionController::UrlWriter 38 include ActionController::UrlWriter
plugins/display_content/test/unit/display_content_block_test.rb
1 require File.dirname(__FILE__) + '/../test_helper' 1 require File.dirname(__FILE__) + '/../test_helper'
2 class DisplayContentBlockTest < ActiveSupport::TestCase 2 class DisplayContentBlockTest < ActiveSupport::TestCase
3 3
  4 + INVALID_KIND_OF_ARTICLE = [EnterpriseHomepage, Event, RssFeed, UploadedFile, Gallery]
  5 + VALID_KIND_OF_ARTICLE = [RawHTMLArticle, TextArticle, TextileArticle, TinyMceArticle, Folder, Blog, Forum]
  6 +
4 should 'describe itself' do 7 should 'describe itself' do
5 assert_not_equal Block.description, DisplayContentBlock.description 8 assert_not_equal Block.description, DisplayContentBlock.description
6 end 9 end
@@ -376,6 +379,57 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase @@ -376,6 +379,57 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase
376 assert_equal [], block.parent_nodes - [f1.id, f2.id, f3.id, f4.id, f5.id] 379 assert_equal [], block.parent_nodes - [f1.id, f2.id, f3.id, f4.id, f5.id]
377 end 380 end
378 381
  382 + should "save the folder in parent_nodes variable if it was checked" do
  383 + profile = create_user('testuser').person
  384 + Article.delete_all
  385 + f1 = fast_create(Folder, :name => 'test folder 1', :profile_id => profile.id)
  386 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => f1.id)
  387 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => f1.id)
  388 +
  389 + checked_articles= {f1.id => 1}
  390 +
  391 + block = DisplayContentBlock.new
  392 + block.stubs(:holder).returns(profile)
  393 + block.checked_nodes= checked_articles
  394 +
  395 + assert_equal [], [f1.id] - block.parent_nodes
  396 + assert_equal [], block.parent_nodes - [f1.id]
  397 + end
  398 +
  399 + should "save the blog in parent_nodes variable if it was checked" do
  400 + profile = create_user('testuser').person
  401 + Article.delete_all
  402 + b1 = fast_create(Blog, :name => 'test folder 1', :profile_id => profile.id)
  403 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => b1.id)
  404 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => b1.id)
  405 +
  406 + checked_articles= {b1.id => 1}
  407 +
  408 + block = DisplayContentBlock.new
  409 + block.stubs(:holder).returns(profile)
  410 + block.checked_nodes= checked_articles
  411 +
  412 + assert_equal [], [b1.id] - block.parent_nodes
  413 + assert_equal [], block.parent_nodes - [b1.id]
  414 + end
  415 +
  416 + should "save the forum in parent_nodes variable if it was checked" do
  417 + profile = create_user('testuser').person
  418 + Article.delete_all
  419 + f1 = fast_create(Forum, :name => 'test folder 1', :profile_id => profile.id)
  420 + a1 = fast_create(TextileArticle, :name => 'test article 1', :profile_id => profile.id, :parent_id => f1.id)
  421 + a2 = fast_create(TextileArticle, :name => 'test article 4', :profile_id => profile.id, :parent_id => f1.id)
  422 +
  423 + checked_articles= {f1.id => 1}
  424 +
  425 + block = DisplayContentBlock.new
  426 + block.stubs(:holder).returns(profile)
  427 + block.checked_nodes= checked_articles
  428 +
  429 + assert_equal [], [f1.id] - block.parent_nodes
  430 + assert_equal [], block.parent_nodes - [f1.id]
  431 + end
  432 +
379 should "return all root articles from profile" do 433 should "return all root articles from profile" do
380 profile = create_user('testuser').person 434 profile = create_user('testuser').person
381 Article.delete_all 435 Article.delete_all
@@ -454,6 +508,41 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase @@ -454,6 +508,41 @@ class DisplayContentBlockTest &lt; ActiveSupport::TestCase
454 assert_equal [], block.articles_of_parent() 508 assert_equal [], block.articles_of_parent()
455 end 509 end
456 510
  511 + INVALID_KIND_OF_ARTICLE.map do |invalid_article|
  512 +
  513 + define_method "test_should_not_return_#{invalid_article.name}_articles_in_articles_of_parent_method" do
  514 + profile = create_user('testuser').person
  515 + Article.delete_all
  516 + a1 = fast_create(invalid_article, :name => 'test article 1', :profile_id => profile.id)
  517 + a2 = fast_create(VALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id)
  518 +
  519 + block = DisplayContentBlock.new
  520 + box = mock()
  521 + box.stubs(:owner).returns(profile)
  522 + block.stubs(:box).returns(box)
  523 + assert_equal [], [a2] - block.articles_of_parent
  524 + assert_equal [], block.articles_of_parent - [a2]
  525 + end
  526 +
  527 + end
  528 +
  529 + VALID_KIND_OF_ARTICLE.map do |valid_article|
  530 +
  531 + define_method "test_should_return_#{valid_article.name}_articles_in_articles_of_parent_method" do
  532 + profile = create_user('testuser').person
  533 + Article.delete_all
  534 + a1 = fast_create(valid_article, :name => 'test article 1', :profile_id => profile.id)
  535 + a2 = fast_create(INVALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id)
  536 +
  537 + block = DisplayContentBlock.new
  538 + box = mock()
  539 + box.stubs(:owner).returns(profile)
  540 + block.stubs(:box).returns(box)
  541 + assert_equal [a1], block.articles_of_parent
  542 + end
  543 +
  544 + end
  545 +
457 should 'list links for all articles title defined in nodes' do 546 should 'list links for all articles title defined in nodes' do
458 profile = create_user('testuser').person 547 profile = create_user('testuser').person
459 Article.delete_all 548 Article.delete_all