Commit 067cda04f5e1cf8201191563c03f28175c8b910d

Authored by Leandro Santos
1 parent 8c783480

fixing unit tests and put article[parent_id] parameter as an option

lib/proposals_discussion_plugin.rb
... ... @@ -15,7 +15,7 @@ class ProposalsDiscussionPlugin < Noosfero::Plugin
15 15 def content_types
16 16 if context.respond_to?(:params) && context.params.kind_of?(Hash) && context.params[:controller] == 'cms' && context.params[:action] == 'new'
17 17 types = []
18   - parent_id = context.params[:parent_id]
  18 + parent_id = context.params[:parent_id] || (context.params[:article][:parent_id] unless context.params[:article].nil?)
19 19 parent = parent_id ? context.profile.articles.find(parent_id) : nil
20 20 types << ProposalsDiscussionPlugin::Discussion
21 21 types << ProposalsDiscussionPlugin::Topic if parent.kind_of?(ProposalsDiscussionPlugin::Discussion)
... ...
test/unit/discussion_test.rb
... ... @@ -36,8 +36,8 @@ class DiscussionTest &lt; ActiveSupport::TestCase
36 36 topic4.add_category c2
37 37  
38 38 random_topics = discussion.random_topics_one_by_category
39   -
40   - random_topics_categories = random_topics.map {|t| t.category.name }
  39 +
  40 + random_topics_categories = random_topics.map {|t| t.categories.map{|c|c.name}}.flatten
41 41  
42 42 assert_equal ["Category 1", "Category 2"],random_topics_categories
43 43 end
... ...
test/unit/proposals_discussion_plugin_test.rb
... ... @@ -20,26 +20,49 @@ class ProposalsDiscussionPluginTest &lt; ActiveSupport::TestCase
20 20 assert_includes plugin.content_types, ProposalsDiscussionPlugin::Discussion
21 21 end
22 22  
23   - should 'return Topic as a content type if parent is a Discussion' do
  23 + should 'return Topic as a content type if parent_id parameter is a Discussion' do
24 24 parent = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => @profile.id)
25 25 @params[:parent_id] = parent.id
26 26 assert_includes plugin.content_types, ProposalsDiscussionPlugin::Topic
27 27 end
28 28  
29   - should 'return Proposal as a content type if parent is a Topic' do
  29 + should 'return Topic as a content type if article parent_id is a Discussion' do
  30 + parent = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => @profile.id)
  31 + @params[:article] = {}
  32 + @params[:article][:parent_id] = parent.id
  33 + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Topic
  34 + end
  35 +
  36 + should 'return Proposal as a content type if parent_id parameter is a Topic' do
30 37 parent = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => @profile.id)
31 38 @params[:parent_id] = parent.id
32 39 assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal
33 40 end
34 41  
35   - should 'return Proposal as a content type if parent is a Discussion and allow_topic is false' do
  42 + should 'return Proposal as a content type if article parent is a Topic' do
  43 + parent = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => @profile.id)
  44 + @params[:article] = {}
  45 + @params[:article][:parent_id] = parent.id
  46 + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal
  47 + end
  48 +
  49 + should 'return Proposal as a content type if parent_id parameter is a Discussion and allow_topic is false' do
36 50 parent = ProposalsDiscussionPlugin::Discussion.create!(:profile => @profile, :name => 'discussion', :allow_topics => false)
37 51 @params[:parent_id] = parent.id
38 52 assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal
39 53 end
40 54  
41   - should 'do not return Proposal as a content type if parent is nil' do
  55 + should 'return Proposal as a content type if article parent is a Discussion and allow_topic is false' do
  56 + parent = ProposalsDiscussionPlugin::Discussion.create!(:profile => @profile, :name => 'discussion', :allow_topics => false)
  57 + @params[:article] = {}
  58 + @params[:article][:parent_id] = parent.id
  59 + assert_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal
  60 + end
  61 +
  62 + should 'do not return Proposal as a content type if parent and article parent is nil' do
42 63 @params[:parent_id] = nil
  64 + @params[:article] = {}
  65 + @params[:article][:parent_id] = nil
43 66 assert_not_includes plugin.content_types, ProposalsDiscussionPlugin::Proposal
44 67 end
45 68  
... ...
views/cms/proposals_discussion_plugin/_proposal.html.erb
... ... @@ -23,6 +23,8 @@
23 23 <% editor_type = 'mceEditor' %>
24 24 <%= labelled_form_field(strip_tags(@article.discussion.custom_body_label), text_area(:article, :body, :class => editor_type)) %>
25 25 </div>
  26 +
  27 + <%= hidden_field(:article, :parent_id) %>
26 28 </div>
27 29  
28 30 <script>
... ...