Commit 2004e8196ec71e0526ea4b81b3721549632345d2

Authored by Leandro Santos
1 parent 09069e2e

adding unit tests for choose content types for display

plugins/display_content/lib/display_content_block.rb
... ... @@ -20,14 +20,9 @@ class DisplayContentBlock < Block
20 20 settings_items :nodes, :type => Array, :default => []
21 21 settings_items :sections,
22 22 :type => Array,
23   -#FIXME make test for values
24   -#Refactoring section stuff
25 23 :default => [{:value => 'publish_date', :checked => true},
26 24 {:value => 'title', :checked => true},
27   - {:value => 'abstract', :checked => true},
28   - {:value => 'body', :checked => false},
29   - {:value => 'image', :checked => false},
30   - {:value => 'tags', :checked => false}]
  25 + {:value => 'abstract', :checked => true}]
31 26 settings_items :display_folder_children, :type => :boolean, :default => true
32 27 settings_items :types, :type => Array
33 28  
... ... @@ -50,7 +45,16 @@ class DisplayContentBlock < Block
50 45 }[section] || section
51 46 end
52 47  
53   - #FIXME make this test copy of Context Content
  48 + alias :orig_sections :sections
  49 + def sections
  50 + available_sections = AVAILABLE_SECTIONS
  51 + available_sections = available_sections - orig_sections.map{|e|e[:value]}
  52 + sections = available_sections.map do |section|
  53 + {:value => section, :checked => false}
  54 + end
  55 + sections + orig_sections
  56 + end
  57 +
54 58 def available_content_types
55 59 @available_content_types ||= [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed] + plugins.dispatch(:content_types)
56 60 checked_types = types.map {|t| t.constantize}
... ... @@ -62,17 +66,14 @@ class DisplayContentBlock < Block
62 66 available_content_types.first(first_types_count)
63 67 end
64 68  
65   - #FIXME make this test copy of Context Content
66 69 def more_content_types
67 70 available_content_types.drop(first_types_count)
68 71 end
69 72  
70   - #FIXME make this test copy of Context Content
71 73 def first_types_count
72 74 [2, types.length].max
73 75 end
74 76  
75   - #FIXME make this test copy of Context Content
76 77 def types=(new_types)
77 78 settings[:types] = new_types.reject(&:blank?)
78 79 end
... ...
plugins/display_content/test/unit/display_content_block_test.rb
... ... @@ -472,8 +472,8 @@ class DisplayContentBlockTest < ActiveSupport::TestCase
472 472  
473 473 block = DisplayContentBlock.new
474 474  
475   - block.sections = [{:value => 'body', :checked => true}]
476   - section = block.sections.first
  475 + section = {:value => 'body', :checked => true}
  476 + block.sections = [section]
477 477  
478 478 assert block.display_section?(section)
479 479 end
... ... @@ -557,4 +557,76 @@ class DisplayContentBlockTest < ActiveSupport::TestCase
557 557 assert_equal [a1], block.articles_of_parent
558 558 end
559 559  
  560 + should "the section display all available sections" do
  561 + block = DisplayContentBlock.new
  562 + assert_equivalent ['publish_date', 'abstract', 'body', 'image' ,'tags', 'title'], block.sections.map{|e|e[:value]}
  563 + end
  564 +
  565 + should "the section display all available sections if the section value has only one key" do
  566 + block = DisplayContentBlock.new
  567 + block.sections = [{:value => 'abstract', :checked => true}]
  568 + assert_equivalent ['publish_date', 'abstract', 'body', 'image' ,'tags', 'title'], block.sections.map{|e|e[:value]}
  569 + end
  570 +
  571 + should 'return available content types with checked types first' do
  572 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
  573 + block = DisplayContentBlock.create!
  574 + block.types = ['TinyMceArticle']
  575 +
  576 + block.types = ['TinyMceArticle', 'Folder']
  577 + assert_equal [TinyMceArticle, Folder, UploadedFile, Event, TextileArticle, RawHTMLArticle, Blog, Forum, Gallery, RssFeed], block.available_content_types
  578 + end
  579 +
  580 + should 'return available content types' do
  581 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
  582 + block = DisplayContentBlock.create!
  583 + block.types = ['TinyMceArticle']
  584 + block.types = []
  585 + assert_equal [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed], block.available_content_types
  586 + end
  587 +
  588 + should 'return first 2 content types' do
  589 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
  590 + block = DisplayContentBlock.create!
  591 + block.types = ['TinyMceArticle']
  592 + assert_equal 2, block.first_content_types.length
  593 + end
  594 +
  595 + should 'return all but first 2 content types' do
  596 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
  597 + block = DisplayContentBlock.create!
  598 + block.types = ['TinyMceArticle']
  599 + assert_equal block.available_content_types.length - 2, block.more_content_types.length
  600 + end
  601 +
  602 + should 'return 2 as default value for first_types_count' do
  603 + block = DisplayContentBlock.create!
  604 + block.types = ['TinyMceArticle']
  605 + assert_equal 2, block.first_types_count
  606 + end
  607 +
  608 + should 'return types length if it has more than 2 selected types' do
  609 + block = DisplayContentBlock.create!
  610 + block.types = ['UploadedFile', 'Event', 'Folder']
  611 + assert_equal 3, block.first_types_count
  612 + end
  613 +
  614 + should 'return selected types at first_content_types' do
  615 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([])
  616 + block = DisplayContentBlock.create!
  617 + block.types = ['UploadedFile', 'Event', 'Folder']
  618 + assert_equal [UploadedFile, Event, Folder], block.first_content_types
  619 + assert_equal block.available_content_types - [UploadedFile, Event, Folder], block.more_content_types
  620 + end
  621 +
  622 + should 'include plugin content at available content types' do
  623 + block = DisplayContentBlock.create!
  624 + class SomePluginContent;end
  625 + class SomePlugin; def content_types; SomePluginContent end end
  626 + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([SomePlugin.new])
  627 +
  628 + block.types = []
  629 + assert_equal [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed, SomePluginContent], block.available_content_types
  630 + end
  631 +
560 632 end
... ...