Commit a78018eb0e088b1b2e29d9161016291df61c084a

Authored by Leandro Santos
1 parent 8ff9e1ef

adding person fields in entities

lib/noosfero/api/entities.rb
@@ -69,12 +69,16 @@ module Noosfero @@ -69,12 +69,16 @@ module Noosfero
69 class Person < Profile 69 class Person < Profile
70 root 'people', 'person' 70 root 'people', 'person'
71 expose :user, :using => UserBasic, documentation: {type: 'User', desc: 'The user data of a person' } 71 expose :user, :using => UserBasic, documentation: {type: 'User', desc: 'The user data of a person' }
72 -# expose :vote_count, if: lambda { |object, options| options[:fields].include?('vote_count') == :full }  
73 - expose :vote_count  
74 - expose :comments_count do |person, options| 72 + expose :vote_count, if: lambda { |object, options| options[:fields].present? ? options[:fields].include?('vote_count') : false}
  73 + expose :comments_count, if: lambda { |object, options| options[:fields].present? ? options[:fields].include?('comments_count') : false} do |person, options|
75 person.comments.count 74 person.comments.count
76 end 75 end
77 - 76 + expose :following_articles_count, if: lambda { |object, options| options[:fields].present? ? options[:fields].include?('following_articles_count') : false} do |person, options|
  77 + person.following_articles.count
  78 + end
  79 + expose :articles_count, if: lambda { |object, options| options[:fields].present? ? options[:fields].include?('articles_count') : false} do |person, options|
  80 + person.articles.count
  81 + end
78 82
79 end 83 end
80 84
test/unit/api/people_test.rb
@@ -180,13 +180,19 @@ class PeopleTest &lt; ActiveSupport::TestCase @@ -180,13 +180,19 @@ class PeopleTest &lt; ActiveSupport::TestCase
180 assert_equal another_name, person.name 180 assert_equal another_name, person.name
181 end 181 end
182 182
183 - PERSON_ATTRIBUTES = %w(vote_count comments_count) 183 + PERSON_ATTRIBUTES = %w(vote_count comments_count following_articles_count articles_count)
184 184
185 PERSON_ATTRIBUTES.map do |attribute| 185 PERSON_ATTRIBUTES.map do |attribute|
186 186
187 - define_method "test_should_expose_#{attribute}_attribute_in_person_enpoints" do 187 + define_method "test_should_not_expose_#{attribute}_attribute_in_person_enpoint_if_field_parameter_is_not_passed" do
188 get "/api/v1/people/me?#{params.to_query}" 188 get "/api/v1/people/me?#{params.to_query}"
189 json = JSON.parse(last_response.body) 189 json = JSON.parse(last_response.body)
  190 + assert_nil json['person'][attribute]
  191 + end
  192 +
  193 + define_method "test_should_expose_#{attribute}_attribute_in_person_enpoints_only_if_field_parameter_is_passed" do
  194 + get "/api/v1/people/me?#{params.to_query}&fields=#{attribute}"
  195 + json = JSON.parse(last_response.body)
190 assert_not_nil json['person'][attribute] 196 assert_not_nil json['person'][attribute]
191 end 197 end
192 198