Commit 2004e8196ec71e0526ea4b81b3721549632345d2
1 parent
09069e2e
Exists in
master
and in
29 other branches
adding unit tests for choose content types for display
Showing
2 changed files
with
85 additions
and
12 deletions
Show diff stats
plugins/display_content/lib/display_content_block.rb
@@ -20,14 +20,9 @@ class DisplayContentBlock < Block | @@ -20,14 +20,9 @@ class DisplayContentBlock < Block | ||
20 | settings_items :nodes, :type => Array, :default => [] | 20 | settings_items :nodes, :type => Array, :default => [] |
21 | settings_items :sections, | 21 | settings_items :sections, |
22 | :type => Array, | 22 | :type => Array, |
23 | -#FIXME make test for values | ||
24 | -#Refactoring section stuff | ||
25 | :default => [{:value => 'publish_date', :checked => true}, | 23 | :default => [{:value => 'publish_date', :checked => true}, |
26 | {:value => 'title', :checked => true}, | 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 | settings_items :display_folder_children, :type => :boolean, :default => true | 26 | settings_items :display_folder_children, :type => :boolean, :default => true |
32 | settings_items :types, :type => Array | 27 | settings_items :types, :type => Array |
33 | 28 | ||
@@ -50,7 +45,16 @@ class DisplayContentBlock < Block | @@ -50,7 +45,16 @@ class DisplayContentBlock < Block | ||
50 | }[section] || section | 45 | }[section] || section |
51 | end | 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 | def available_content_types | 58 | def available_content_types |
55 | @available_content_types ||= [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed] + plugins.dispatch(:content_types) | 59 | @available_content_types ||= [UploadedFile, Event, TinyMceArticle, TextileArticle, RawHTMLArticle, Folder, Blog, Forum, Gallery, RssFeed] + plugins.dispatch(:content_types) |
56 | checked_types = types.map {|t| t.constantize} | 60 | checked_types = types.map {|t| t.constantize} |
@@ -62,17 +66,14 @@ class DisplayContentBlock < Block | @@ -62,17 +66,14 @@ class DisplayContentBlock < Block | ||
62 | available_content_types.first(first_types_count) | 66 | available_content_types.first(first_types_count) |
63 | end | 67 | end |
64 | 68 | ||
65 | - #FIXME make this test copy of Context Content | ||
66 | def more_content_types | 69 | def more_content_types |
67 | available_content_types.drop(first_types_count) | 70 | available_content_types.drop(first_types_count) |
68 | end | 71 | end |
69 | 72 | ||
70 | - #FIXME make this test copy of Context Content | ||
71 | def first_types_count | 73 | def first_types_count |
72 | [2, types.length].max | 74 | [2, types.length].max |
73 | end | 75 | end |
74 | 76 | ||
75 | - #FIXME make this test copy of Context Content | ||
76 | def types=(new_types) | 77 | def types=(new_types) |
77 | settings[:types] = new_types.reject(&:blank?) | 78 | settings[:types] = new_types.reject(&:blank?) |
78 | end | 79 | end |
plugins/display_content/test/unit/display_content_block_test.rb
@@ -472,8 +472,8 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | @@ -472,8 +472,8 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | ||
472 | 472 | ||
473 | block = DisplayContentBlock.new | 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 | assert block.display_section?(section) | 478 | assert block.display_section?(section) |
479 | end | 479 | end |
@@ -557,4 +557,76 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | @@ -557,4 +557,76 @@ class DisplayContentBlockTest < ActiveSupport::TestCase | ||
557 | assert_equal [a1], block.articles_of_parent | 557 | assert_equal [a1], block.articles_of_parent |
558 | end | 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 | end | 632 | end |