diff --git a/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb b/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb index 5cd63dc..aee0a6d 100644 --- a/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb +++ b/src/noosfero-spb/gov_user/lib/gov_user_plugin.rb @@ -9,6 +9,10 @@ class GovUserPlugin < Noosfero::Plugin include ActionDispatch::Routing include Rails.application.routes.url_helpers + def self.api_mount_points + [GovUserPlugin::API] + end + def self.plugin_name "GovUserPlugin" end diff --git a/src/noosfero-spb/gov_user/lib/gov_user_plugin/api.rb b/src/noosfero-spb/gov_user/lib/gov_user_plugin/api.rb new file mode 100644 index 0000000..13ac588 --- /dev/null +++ b/src/noosfero-spb/gov_user/lib/gov_user_plugin/api.rb @@ -0,0 +1,23 @@ +require File.dirname(__FILE__) + '/../../../../../lib/noosfero/api/helpers' +require_relative 'api_entities' + +class GovUserPlugin::API < Grape::API + + include Noosfero::API::APIHelpers + + resource :gov_user do + get 'institutions' do + authenticate! + institutions = select_filtered_collection_of(environment,'communities',params).joins(:institution) + present institutions.map{|o|o.institution}, :with => Entities::Institution + end + + get 'institutions/:id' do + authenticate! + institution = Institution.find_by_id(params[:id]) + present institution, :with => Entities::Institution + end + + end +end + diff --git a/src/noosfero-spb/gov_user/lib/gov_user_plugin/api_entities.rb b/src/noosfero-spb/gov_user/lib/gov_user_plugin/api_entities.rb new file mode 100644 index 0000000..7bfd050 --- /dev/null +++ b/src/noosfero-spb/gov_user/lib/gov_user_plugin/api_entities.rb @@ -0,0 +1,13 @@ +module Entities + class Institution < Noosfero::API::Entity + root 'institutions', 'institution' + expose :name, :acronym, :unit_code, :parent_code, :unit_type, + :sub_juridical_nature, :normalization_level, + :version, :cnpj, :type, :governmental_power, + :governmental_sphere, :sisp, :juridical_nature, + :corporate_name, :siorg_code, :id + expose :community_id do |institution,options| + institution.community.id + end + end +end diff --git a/src/noosfero-spb/gov_user/test/unit/api_test.rb b/src/noosfero-spb/gov_user/test/unit/api_test.rb new file mode 100644 index 0000000..abfead0 --- /dev/null +++ b/src/noosfero-spb/gov_user/test/unit/api_test.rb @@ -0,0 +1,51 @@ +require File.dirname(__FILE__) + '/../../../../test/unit/api/test_helper' +require File.dirname(__FILE__) + '/../helpers/plugin_test_helper' + +class GovUserApiTest < ActiveSupport::TestCase + + include PluginTestHelper + + def setup + login_api + environment = Environment.default + environment.enable_plugin(GovUserPlugin) + @gov_power = GovernmentalPower.create(:name=>"Some Gov Power") + @gov_sphere = GovernmentalSphere.create(:name=>"Some Gov Sphere") + @juridical_nature = JuridicalNature.create(:name => "Autarquia") + @institution = create_public_institution( + "Ministerio Publico da Uniao", + "MPU", + "BR", + "DF", + "Gama", + @juridical_nature, + @gov_power, + @gov_sphere, + "11.222.333/4444-55") + end + + should 'list all institutions' do + @institution1 = create_public_institution( + "Instituicao bacana", + "IB", + "BR", + "DF", + "Gama", + @juridical_nature, + @gov_power, + @gov_sphere, + "11.222.333/4444-56" + ) + + get "/api/v1/gov_user/institutions?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equivalent [@institution.id, @institution1.id], json['institutions'].map {|c| c['id']} + end + + should 'get institution by id' do + get "/api/v1/gov_user/institutions/#{@institution.id}?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal @institution.id, json["institution"]["id"] + end + +end diff --git a/src/noosfero-spb/software_communities/lib/software_communities_plugin/api.rb b/src/noosfero-spb/software_communities/lib/software_communities_plugin/api.rb index 902b374..3b6d59f 100644 --- a/src/noosfero-spb/software_communities/lib/software_communities_plugin/api.rb +++ b/src/noosfero-spb/software_communities/lib/software_communities_plugin/api.rb @@ -9,13 +9,13 @@ class SoftwareCommunitiesPlugin::API < Grape::API get do authenticate! softwares = select_filtered_collection_of(environment,'communities',params).joins(:software_info) - present softwares, :with => Entities::SoftwareCommunity + present softwares.map{|o|o.software_info}, :with => Entities::SoftwareInfo end get ':id' do authenticate! software = SoftwareInfo.find_by_id(params[:id]) - present software.community, :with => Entities::SoftwareCommunity + present software, :with => Entities::SoftwareInfo end end diff --git a/src/noosfero-spb/software_communities/lib/software_communities_plugin/api_entities.rb b/src/noosfero-spb/software_communities/lib/software_communities_plugin/api_entities.rb index 8456ead..db62d1a 100644 --- a/src/noosfero-spb/software_communities/lib/software_communities_plugin/api_entities.rb +++ b/src/noosfero-spb/software_communities/lib/software_communities_plugin/api_entities.rb @@ -1,14 +1,10 @@ module Entities class SoftwareInfo < Noosfero::API::Entity - expose :id, :finality, :repository_link, :public_software - end - - class SoftwareCommunity < Noosfero::API::Entity - root 'softwares', 'software' - expose :community, :using => Noosfero::API::Entities::Community do |community, options| - community + root 'software_infos', 'software_info' + expose :id, :finality, :repository_link, :public_software, :acronym, :objectives, + :features,:license_info, :software_languages, :software_databases, :operating_system_names + expose :community_id do |software_info,options| + software_info.community.id end - expose :software_info, :using => SoftwareInfo end - end diff --git a/src/noosfero-spb/software_communities/test/unit/api_test.rb b/src/noosfero-spb/software_communities/test/unit/api_test.rb index 7191d9d..2e16e8c 100644 --- a/src/noosfero-spb/software_communities/test/unit/api_test.rb +++ b/src/noosfero-spb/software_communities/test/unit/api_test.rb @@ -17,7 +17,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase get "/api/v1/software_communities?#{params.to_query}" json = JSON.parse(last_response.body) - assert_equivalent [@software_info.id, @software_info2.id], json['softwares'].map {|c| c['software_info']['id']} + assert_equivalent [@software_info.id, @software_info2.id], json['software_infos'].map {|c| c['id']} end should 'get software by id' do @@ -25,7 +25,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase get "/api/v1/software_communities/#{@software_info.id}?#{params.to_query}" json = JSON.parse(last_response.body) - assert_equal @software_info.id, json["software"]['software_info']["id"] + assert_equal @software_info.id, json["software_info"]["id"] end end -- libgit2 0.21.2