diff --git a/lib/ext/entities.rb b/lib/ext/entities.rb new file mode 100644 index 0000000..4881f51 --- /dev/null +++ b/lib/ext/entities.rb @@ -0,0 +1,13 @@ +module Noosfero + module API + module Entities + + class ArticleBase < Entity + expose :ranking_position do |article, options| + article.kind_of?(ProposalsDiscussionPlugin::Proposal) && article.ranking_item.present? ? article.ranking_item.position : nil + end + end + + end + end +end diff --git a/lib/proposals_discussion_plugin/proposals_holder.rb b/lib/proposals_discussion_plugin/proposals_holder.rb index c23b731..df8cd7d 100644 --- a/lib/proposals_discussion_plugin/proposals_holder.rb +++ b/lib/proposals_discussion_plugin/proposals_holder.rb @@ -55,6 +55,7 @@ class ProposalsDiscussionPlugin::ProposalsHolder < Folder ProposalsDiscussionPlugin::RankingItem.new(:proposal => proposal, :abstract => proposal.abstract, :votes_for => proposal.votes_for, :votes_against => proposal.votes_against, :hits => proposal.hits, :effective_support => effective_support) end ranking.sort_by { |p| p.effective_support }.reverse + ranking.each_with_index { |p, i| p.position = i+1 } end def update_ranking diff --git a/test/unit/api_test.rb b/test/unit/api_test.rb index abc2e35..c43049b 100644 --- a/test/unit/api_test.rb +++ b/test/unit/api_test.rb @@ -65,4 +65,16 @@ class APITest < ActiveSupport::TestCase assert_equal "This is a malicious body SearchParam", task.article.body end + should 'return article position when list proposals' do + discussion = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => user.person.id) + topic = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => user.person.id, :parent_id => discussion.id) + proposal = fast_create(ProposalsDiscussionPlugin::Proposal, :profile_id => user.person.id, :parent_id => topic.id) + params[:content_type] = 'ProposalsDiscussionPlugin::Proposal' + topic.update_ranking + + get "/api/v1/articles/?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_includes json["articles"].map { |a| a["ranking_position"] }, 1 + end + end -- libgit2 0.21.2