Commit 09952f2a15015e0ce79dd8c53c8fa1949fef44e9

Authored by Victor Costa
1 parent fc09b34b

Return ranking position of a proposan in api

lib/ext/entities.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +module Noosfero
  2 + module API
  3 + module Entities
  4 +
  5 + class ArticleBase < Entity
  6 + expose :ranking_position do |article, options|
  7 + article.kind_of?(ProposalsDiscussionPlugin::Proposal) && article.ranking_item.present? ? article.ranking_item.position : nil
  8 + end
  9 + end
  10 +
  11 + end
  12 + end
  13 +end
... ...
lib/proposals_discussion_plugin/proposals_holder.rb
... ... @@ -55,6 +55,7 @@ class ProposalsDiscussionPlugin::ProposalsHolder &lt; Folder
55 55 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)
56 56 end
57 57 ranking.sort_by { |p| p.effective_support }.reverse
  58 + ranking.each_with_index { |p, i| p.position = i+1 }
58 59 end
59 60  
60 61 def update_ranking
... ...
test/unit/api_test.rb
... ... @@ -65,4 +65,16 @@ class APITest &lt; ActiveSupport::TestCase
65 65 assert_equal "This is a malicious body SearchParam", task.article.body
66 66 end
67 67  
  68 + should 'return article position when list proposals' do
  69 + discussion = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => user.person.id)
  70 + topic = fast_create(ProposalsDiscussionPlugin::Topic, :profile_id => user.person.id, :parent_id => discussion.id)
  71 + proposal = fast_create(ProposalsDiscussionPlugin::Proposal, :profile_id => user.person.id, :parent_id => topic.id)
  72 + params[:content_type] = 'ProposalsDiscussionPlugin::Proposal'
  73 + topic.update_ranking
  74 +
  75 + get "/api/v1/articles/?#{params.to_query}"
  76 + json = JSON.parse(last_response.body)
  77 + assert_includes json["articles"].map { |a| a["ranking_position"] }, 1
  78 + end
  79 +
68 80 end
... ...