Commit 2004e8196ec71e0526ea4b81b3721549632345d2
1 parent
09069e2e
Exists in
master
and in
22 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 |