From 45799bf12bdaba541890fa345f76c161d041276f Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Tue, 15 Dec 2015 09:53:01 -0300 Subject: [PATCH] Add proposal body to ranking in api --- lib/ext/entities.rb | 6 ++++++ lib/proposals_discussion_plugin/api.rb | 3 ++- lib/proposals_discussion_plugin/ranking_item.rb | 2 ++ test/unit/api_test.rb | 8 ++++---- test/unit/ranking_item_test.rb | 6 ++++++ 5 files changed, 20 insertions(+), 5 deletions(-) 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