From 067cda04f5e1cf8201191563c03f28175c8b910d Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Tue, 15 Sep 2015 12:32:27 -0300 Subject: [PATCH] fixing unit tests and put article[parent_id] parameter as an option --- lib/proposals_discussion_plugin.rb | 2 +- test/unit/discussion_test.rb | 4 ++-- test/unit/proposals_discussion_plugin_test.rb | 31 +++++++++++++++++++++++++++---- views/cms/proposals_discussion_plugin/_proposal.html.erb | 2 ++ 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/proposals_discussion_plugin.rb b/lib/proposals_discussion_plugin.rb index 3945539..bd21310 100644 --- a/lib/proposals_discussion_plugin.rb +++ b/lib/proposals_discussion_plugin.rb @@ -15,7 +15,7 @@ class ProposalsDiscussionPlugin < Noosfero::Plugin def content_types if context.respond_to?(:params) && context.params.kind_of?(Hash) && context.params[:controller] == 'cms' && context.params[:action] == 'new' types = [] - parent_id = context.params[:parent_id] + parent_id = context.params[:parent_id] || (context.params[:article][:parent_id] unless context.params[:article].nil?) parent = parent_id ? context.profile.articles.find(parent_id) : nil types << ProposalsDiscussionPlugin::Discussion types << ProposalsDiscussionPlugin::Topic if parent.kind_of?(ProposalsDiscussionPlugin::Discussion) diff --git a/test/unit/discussion_test.rb b/test/unit/discussion_test.rb index fad92fe..5f630e1 100644 --- a/test/unit/discussion_test.rb +++ b/test/unit/discussion_test.rb @@ -36,8 +36,8 @@ class DiscussionTest < ActiveSupport::TestCase topic4.add_category c2 random_topics = discussion.random_topics_one_by_category - - random_topics_categories = random_topics.map {|t| t.category.name } + + random_topics_categories = random_topics.map {|t| t.categories.map{|c|c.name}}.flatten assert_equal ["Category 1", "Category 2"],random_topics_categories end diff --git a/test/unit/proposals_discussion_plugin_test.rb b/test/unit/proposals_discussion_plugin_test.rb index 0ebd802..78873fc 100644 --- a/test/unit/proposals_discussion_plugin_test.rb +++ b/test/unit/proposals_discussion_plugin_test.rb @@ -20,26 +20,49 @@ class ProposalsDiscussionPluginTest < ActiveSupport::TestCase assert_includes plugin.content_types, ProposalsDiscussionPlugin::Discussion end - should 'return Topic as a content type if parent is a Discussion' do + should 'return Topic as a content type if parent_id parameter is a Discussion' do parent = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => @profile.id) @params[:parent_id] = parent.id assert_includes plugin.content_types, ProposalsDiscussionPlugin::Topic end - should 'return Proposal as a content type if parent is a Topic' do + should 'return Topic as a content type if article parent_id is a Discussion' do + parent = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => @profile.id) + @params[:article] = {} + @params[:article][:parent_id] = parent.id + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Topic + end + + should 'return Proposal as a content type if parent_id parameter is a Topic' do parent = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => @profile.id) @params[:parent_id] = parent.id assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal end - should 'return Proposal as a content type if parent is a Discussion and allow_topic is false' do + should 'return Proposal as a content type if article parent is a Topic' do + parent = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => @profile.id) + @params[:article] = {} + @params[:article][:parent_id] = parent.id + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal + end + + should 'return Proposal as a content type if parent_id parameter is a Discussion and allow_topic is false' do parent = ProposalsDiscussionPlugin::Discussion.create!(:profile => @profile, :name => 'discussion', :allow_topics => false) @params[:parent_id] = parent.id assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal end - should 'do not return Proposal as a content type if parent is nil' do + should 'return Proposal as a content type if article parent is a Discussion and allow_topic is false' do + parent = ProposalsDiscussionPlugin::Discussion.create!(:profile => @profile, :name => 'discussion', :allow_topics => false) + @params[:article] = {} + @params[:article][:parent_id] = parent.id + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal + end + + should 'do not return Proposal as a content type if parent and article parent is nil' do @params[:parent_id] = nil + @params[:article] = {} + @params[:article][:parent_id] = nil assert_not_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal end diff --git a/views/cms/proposals_discussion_plugin/_proposal.html.erb b/views/cms/proposals_discussion_plugin/_proposal.html.erb index 96290c1..242ef8b 100644 --- a/views/cms/proposals_discussion_plugin/_proposal.html.erb +++ b/views/cms/proposals_discussion_plugin/_proposal.html.erb @@ -23,6 +23,8 @@ <% editor_type = 'mceEditor' %> <%= labelled_form_field(strip_tags(@article.discussion.custom_body_label), text_area(:article, :body, :class => editor_type)) %> + + <%= hidden_field(:article, :parent_id) %>