From 02223aae274f217f2f64948950606e43f2308889 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Mon, 4 Nov 2013 20:39:22 +0000 Subject: [PATCH] stoa-api: include communities to api --- plugins/stoa/lib/stoa_plugin/person_api.rb | 4 ++++ plugins/stoa/lib/stoa_plugin/person_fields.rb | 2 +- plugins/stoa/test/unit/person_api_test.rb | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/plugins/stoa/lib/stoa_plugin/person_api.rb b/plugins/stoa/lib/stoa_plugin/person_api.rb index 0d2413e..ce0ba1f 100644 --- a/plugins/stoa/lib/stoa_plugin/person_api.rb +++ b/plugins/stoa/lib/stoa_plugin/person_api.rb @@ -29,4 +29,8 @@ class StoaPlugin::PersonApi < Noosfero::FieldsDecorator memo end end + + def communities + object.communities.public.map {|community| {:id => community.id, :name => community.name}} + end end diff --git a/plugins/stoa/lib/stoa_plugin/person_fields.rb b/plugins/stoa/lib/stoa_plugin/person_fields.rb index b25c8af..e30273f 100644 --- a/plugins/stoa/lib/stoa_plugin/person_fields.rb +++ b/plugins/stoa/lib/stoa_plugin/person_fields.rb @@ -4,7 +4,7 @@ module StoaPlugin::PersonFields EXTRA = %w[tags] ESSENTIAL = %w[username email nusp] - AVERAGE = ESSENTIAL + %w[name first_name surname address homepage] + AVERAGE = ESSENTIAL + %w[name first_name surname address homepage communities] FULL = (AVERAGE + Person.fields + HEAVY + EXTRA - FILTER).uniq COMPLETE = FULL - HEAVY diff --git a/plugins/stoa/test/unit/person_api_test.rb b/plugins/stoa/test/unit/person_api_test.rb index abad285..0407b42 100644 --- a/plugins/stoa/test/unit/person_api_test.rb +++ b/plugins/stoa/test/unit/person_api_test.rb @@ -101,6 +101,31 @@ class StoaPlugin::PersonApiTest < ActiveSupport::TestCase assert !api.tags.has_key?('noosfero') end + should 'provide communities' do + c1 = fast_create(Community) + c2 = fast_create(Community) + c3 = fast_create(Community) + c1.add_member(person) + c2.add_member(person) + communities = [{:id => c1.id, :name => c1.name}, {:id => c2.id, :name => c2.name}] + api = StoaPlugin::PersonApi.new(person, self) + + assert_equivalent communities, api.communities + end + + should 'not provide private communities' do + c1 = fast_create(Community) + c2 = fast_create(Community, :public_profile => false) + c3 = fast_create(Community, :visible => false) + c1.add_member(person) + c2.add_member(person) + c3.add_member(person) + communities = [{:id => c1.id, :name => c1.name}] + api = StoaPlugin::PersonApi.new(person, self) + + assert_equivalent communities, api.communities + end + private def create_article_with_tags(profile_id, tags = '', options = {}) -- libgit2 0.21.2