diff --git a/lib/ext/entities.rb b/lib/ext/entities.rb
index d29b104..2883745 100644
--- a/lib/ext/entities.rb
+++ b/lib/ext/entities.rb
@@ -15,6 +15,12 @@ module Noosfero
end
end
+ class RankingItem < Entity
+ root :proposals, :proposal
+ expose :id, :position, :abstract, :body, :votes_for, :votes_against
+ expose :hits, :effective_support, :proposal_id, :created_at, :updated_at
+ end
+
end
end
diff --git a/lib/proposals_discussion_plugin/api.rb b/lib/proposals_discussion_plugin/api.rb
index e0dd4d3..8e5cdd1 100644
--- a/lib/proposals_discussion_plugin/api.rb
+++ b/lib/proposals_discussion_plugin/api.rb
@@ -6,8 +6,9 @@ class ProposalsDiscussionPlugin::API < Grape::API
get ':id/ranking' do
article = find_article(environment.articles, params[:id])
current_page = paginate(article.ranking)
+ present(current_page, :with => Noosfero::API::Entities::RankingItem)
#FIXME find a better way to get updated_at date
- {:proposals => current_page, :updated_at => current_page.blank? ? DateTime.now : current_page.first.updated_at}
+ present :updated_at, current_page.blank? ? DateTime.now : current_page.first.updated_at
end
post ':id/propose' do
diff --git a/lib/proposals_discussion_plugin/ranking_item.rb b/lib/proposals_discussion_plugin/ranking_item.rb
index 9e55765..4b5f233 100644
--- a/lib/proposals_discussion_plugin/ranking_item.rb
+++ b/lib/proposals_discussion_plugin/ranking_item.rb
@@ -4,4 +4,6 @@ class ProposalsDiscussionPlugin::RankingItem < ActiveRecord::Base
attr_accessible :proposal, :abstract, :votes_for, :votes_against, :hits, :effective_support
+ delegate :body, :to => :proposal
+
end
diff --git a/test/unit/api_test.rb b/test/unit/api_test.rb
index 6aa0b6c..c93d2eb 100644
--- a/test/unit/api_test.rb
+++ b/test/unit/api_test.rb
@@ -51,11 +51,11 @@ class APITest < ActiveSupport::TestCase
should 'sanitize proposal' do
discussion = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => user.person.id)
- topic = fast_create(ProposalsDiscussionPlugin::Topic,
- :profile_id => user.person.id,
+ topic = fast_create(ProposalsDiscussionPlugin::Topic,
+ :profile_id => user.person.id,
:parent_id => discussion.id)
- params[:article] = {:name => "Proposal name", :abstract => "Proposal abstract",
- :type => 'ProposalsDiscussionPlugin::Proposal',
+ params[:article] = {:name => "Proposal name", :abstract => "Proposal abstract",
+ :type => 'ProposalsDiscussionPlugin::Proposal',
:body => "This is a malicious body
SearchParam"}
assert_difference "ProposalsDiscussionPlugin::ProposalTask.count" do
post "/api/v1/proposals_discussion_plugin/#{topic.id}/propose?#{params.to_query}"
diff --git a/test/unit/ranking_item_test.rb b/test/unit/ranking_item_test.rb
index 6ea597e..2d091be 100644
--- a/test/unit/ranking_item_test.rb
+++ b/test/unit/ranking_item_test.rb
@@ -16,4 +16,10 @@ class RankingItemTest < ActiveSupport::TestCase
assert proposal.ranking_item
end
+ should 'return body of a proposal' do
+ proposal = ProposalsDiscussionPlugin::Proposal.create!(:name => 'test', :abstract => 'abstract', :body => 'body', :profile => profile, :parent => discussion)
+ discussion.update_ranking
+ assert_equal 'body', proposal.ranking_item.body
+ end
+
end
--
libgit2 0.21.2