Commit 02223aae274f217f2f64948950606e43f2308889

Authored by Rodrigo Souto
1 parent fb79fda0

stoa-api: include communities to api

plugins/stoa/lib/stoa_plugin/person_api.rb
... ... @@ -29,4 +29,8 @@ class StoaPlugin::PersonApi < Noosfero::FieldsDecorator
29 29 memo
30 30 end
31 31 end
  32 +
  33 + def communities
  34 + object.communities.public.map {|community| {:id => community.id, :name => community.name}}
  35 + end
32 36 end
... ...
plugins/stoa/lib/stoa_plugin/person_fields.rb
... ... @@ -4,7 +4,7 @@ module StoaPlugin::PersonFields
4 4 EXTRA = %w[tags]
5 5  
6 6 ESSENTIAL = %w[username email nusp]
7   - AVERAGE = ESSENTIAL + %w[name first_name surname address homepage]
  7 + AVERAGE = ESSENTIAL + %w[name first_name surname address homepage communities]
8 8 FULL = (AVERAGE + Person.fields + HEAVY + EXTRA - FILTER).uniq
9 9 COMPLETE = FULL - HEAVY
10 10  
... ...
plugins/stoa/test/unit/person_api_test.rb
... ... @@ -101,6 +101,31 @@ class StoaPlugin::PersonApiTest < ActiveSupport::TestCase
101 101 assert !api.tags.has_key?('noosfero')
102 102 end
103 103  
  104 + should 'provide communities' do
  105 + c1 = fast_create(Community)
  106 + c2 = fast_create(Community)
  107 + c3 = fast_create(Community)
  108 + c1.add_member(person)
  109 + c2.add_member(person)
  110 + communities = [{:id => c1.id, :name => c1.name}, {:id => c2.id, :name => c2.name}]
  111 + api = StoaPlugin::PersonApi.new(person, self)
  112 +
  113 + assert_equivalent communities, api.communities
  114 + end
  115 +
  116 + should 'not provide private communities' do
  117 + c1 = fast_create(Community)
  118 + c2 = fast_create(Community, :public_profile => false)
  119 + c3 = fast_create(Community, :visible => false)
  120 + c1.add_member(person)
  121 + c2.add_member(person)
  122 + c3.add_member(person)
  123 + communities = [{:id => c1.id, :name => c1.name}]
  124 + api = StoaPlugin::PersonApi.new(person, self)
  125 +
  126 + assert_equivalent communities, api.communities
  127 + end
  128 +
104 129 private
105 130  
106 131 def create_article_with_tags(profile_id, tags = '', options = {})
... ...