From ce08b7cceaf76a1d3b57c4994a37ef43e9f07da2 Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Tue, 27 Oct 2015 15:15:36 -0300 Subject: [PATCH] should filter person fieldws return by fields parameters --- Gemfile.lock | 42 +++++------------------------------------- lib/noosfero/api/entities.rb | 4 +++- lib/noosfero/api/v1/people.rb | 4 ++-- test/unit/api/people_test.rb | 15 +++++++++++++++ 4 files changed, 25 insertions(+), 40 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1cb53b4..ddebf92 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -40,11 +40,8 @@ GEM multi_json (~> 1.0) acts-as-taggable-on (3.4.4) activerecord (>= 3.2, < 5) - addressable (2.3.8) + ambry (0.3.1) api-pagination (4.1.1) - api_smith (1.3.0) - hashie (>= 1.0, < 3.0) - httparty arel (3.0.3) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) @@ -62,8 +59,6 @@ GEM chronic (0.10.2) coercible (1.0.0) descendants_tracker (~> 0.0.1) - css_parser (1.3.7) - addressable cucumber (1.0.6) builder (>= 2.1.2) diff-lcs (>= 1.1.2) @@ -89,10 +84,6 @@ GEM actionmailer (>= 3.0.4) activesupport (>= 3.0.4) execjs (2.6.0) - faraday (0.9.2) - multipart-post (>= 1.2, < 3) - faraday_middleware (0.10.0) - faraday (>= 0.7.4, < 0.10) fast_gettext (0.6.12) ffi (1.9.10) gettext (2.2.1) @@ -116,11 +107,8 @@ GEM grape-swagger (0.10.2) grape (>= 0.8.0) grape-entity - hashie (2.1.2) + hashie (3.4.2) hike (1.2.3) - httparty (0.12.0) - json (~> 1.8) - multi_xml (>= 0.5.2) i18n (0.7.0) ice_nine (0.11.1) journey (1.0.4) @@ -128,7 +116,6 @@ GEM kgio (2.10.0) kramdown (1.9.0) libv8 (3.16.14.11) - link_header (0.0.8) liquid (3.0.6) locale (2.0.9) magic (0.2.9) @@ -136,6 +123,8 @@ GEM mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) + merit (2.3.2) + ambry (~> 0.3.0) metaclass (0.0.4) mime-types (1.25.1) mini_portile (0.6.2) @@ -144,13 +133,8 @@ GEM metaclass (~> 0.0.1) multi_json (1.11.2) multi_xml (0.5.5) - multipart-post (2.0.0) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) - oai (0.3.1) - builder (>= 2.0.0) - faraday - faraday_middleware pg (0.13.2) polyglot (0.3.5) rack (1.4.7) @@ -187,24 +171,12 @@ GEM thor (>= 0.14.6, < 2.0) raindrops (0.15.0) rake (10.4.2) - rdf (1.1.17.1) - link_header (~> 0.0, >= 0.0.8) - rdf-virtuoso (0.1.6) - api_smith (~> 1.3.0) - httparty (~> 0.12.0) - rdf (~> 1.1.0) rdoc (3.12.2) json (~> 1.4) ref (2.0.0) rest-client (1.6.9) mime-types (~> 1.16) rmagick (2.13.4) - roadie (3.0.5) - css_parser (~> 1.3.4) - nokogiri (~> 1.6.0) - roadie-rails (1.0.6) - railties (>= 3.0, < 4.3) - roadie (~> 3.0) rspec (2.14.1) rspec-core (~> 2.14.0) rspec-expectations (~> 2.14.0) @@ -297,22 +269,18 @@ DEPENDENCIES kramdown liquid (~> 3.0.3) locale (~> 2.0.5) + merit (~> 2.3.1) minitest (~> 3.2.0) mocha (~> 1.1.0) nokogiri (~> 1.6.0) - oai (= 0.3.1) pg (~> 0.13.2) rack-contrib rack-cors rails (~> 3.2.22) rails_autolink (~> 1.1.5) rake - rdf - rdf-virtuoso rest-client (~> 1.6.7) rmagick (~> 2.13.1) - roadie (= 3.0.5) - roadie-rails rspec (~> 2.14.0) rspec-rails (~> 2.14.1) ruby-feedparser (~> 0.7) diff --git a/lib/noosfero/api/entities.rb b/lib/noosfero/api/entities.rb index 7f0ec63..527c1a1 100644 --- a/lib/noosfero/api/entities.rb +++ b/lib/noosfero/api/entities.rb @@ -52,7 +52,9 @@ module Noosfero end class Profile < Entity - expose :identifier, :name, :id + expose :id + expose :identifier + expose :name expose :created_at, :format_with => :timestamp expose :updated_at, :format_with => :timestamp expose :image, :using => Image diff --git a/lib/noosfero/api/v1/people.rb b/lib/noosfero/api/v1/people.rb index bf13ea1..74bdcf1 100644 --- a/lib/noosfero/api/v1/people.rb +++ b/lib/noosfero/api/v1/people.rb @@ -33,12 +33,12 @@ module Noosfero get do people = select_filtered_collection_of(environment, 'people', params) people = people.visible_for_person(current_person) - present people, :with => Entities::Person + present people, :with => Entities::Person, :fields => params[:fields] end desc "Return the logged user information" get "/me" do - present current_person, :with => Entities::Person + present current_person, :with => Entities::Person, :fields => params[:fields] end desc "Return the person information" diff --git a/test/unit/api/people_test.rb b/test/unit/api/people_test.rb index ff3ccad..119c38c 100644 --- a/test/unit/api/people_test.rb +++ b/test/unit/api/people_test.rb @@ -47,12 +47,27 @@ class PeopleTest < ActiveSupport::TestCase assert_equal some_person.id, json['person']['id'] end + should 'people endpoint filter by fields parameter' do + get "/api/v1/people?#{params.to_query}&fields=name" + json = JSON.parse(last_response.body) + expected = {'people' => [{'name' => person.name}]} + assert_equal expected, json + end + + should 'get logged person' do get "/api/v1/people/me?#{params.to_query}" json = JSON.parse(last_response.body) assert_equal person.id, json['person']['id'] end + should 'me endpoint filter by fields parameter' do + get "/api/v1/people/me?#{params.to_query}&fields=name" + json = JSON.parse(last_response.body) + expected = {'person' => {'name' => person.name}} + assert_equal expected, json + end + should 'not get invisible person' do person = fast_create(Person, :visible => false) -- libgit2 0.21.2