Commit 69653c9105b7fbedd01814b17db62e9c930f0c9e
1 parent
3ab32308
Exists in
master
and in
53 other branches
API improvements for spb plugins
- Added endpoint for Institution in gov_user - Removed community data from SoftwareInfo in software_communities - Software community endpoint restructured Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Showing
7 changed files
with
100 additions
and
13 deletions
Show diff stats
src/noosfero-spb/gov_user/lib/gov_user_plugin.rb
@@ -9,6 +9,10 @@ class GovUserPlugin < Noosfero::Plugin | @@ -9,6 +9,10 @@ class GovUserPlugin < Noosfero::Plugin | ||
9 | include ActionDispatch::Routing | 9 | include ActionDispatch::Routing |
10 | include Rails.application.routes.url_helpers | 10 | include Rails.application.routes.url_helpers |
11 | 11 | ||
12 | + def self.api_mount_points | ||
13 | + [GovUserPlugin::API] | ||
14 | + end | ||
15 | + | ||
12 | def self.plugin_name | 16 | def self.plugin_name |
13 | "GovUserPlugin" | 17 | "GovUserPlugin" |
14 | end | 18 | end |
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +require File.dirname(__FILE__) + '/../../../../../lib/noosfero/api/helpers' | ||
2 | +require_relative 'api_entities' | ||
3 | + | ||
4 | +class GovUserPlugin::API < Grape::API | ||
5 | + | ||
6 | + include Noosfero::API::APIHelpers | ||
7 | + | ||
8 | + resource :gov_user do | ||
9 | + get 'institutions' do | ||
10 | + authenticate! | ||
11 | + institutions = select_filtered_collection_of(environment,'communities',params).joins(:institution) | ||
12 | + present institutions.map{|o|o.institution}, :with => Entities::Institution | ||
13 | + end | ||
14 | + | ||
15 | + get 'institutions/:id' do | ||
16 | + authenticate! | ||
17 | + institution = Institution.find_by_id(params[:id]) | ||
18 | + present institution, :with => Entities::Institution | ||
19 | + end | ||
20 | + | ||
21 | + end | ||
22 | +end | ||
23 | + |
src/noosfero-spb/gov_user/lib/gov_user_plugin/api_entities.rb
0 → 100644
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +module Entities | ||
2 | + class Institution < Noosfero::API::Entity | ||
3 | + root 'institutions', 'institution' | ||
4 | + expose :name, :acronym, :unit_code, :parent_code, :unit_type, | ||
5 | + :sub_juridical_nature, :normalization_level, | ||
6 | + :version, :cnpj, :type, :governmental_power, | ||
7 | + :governmental_sphere, :sisp, :juridical_nature, | ||
8 | + :corporate_name, :siorg_code, :id | ||
9 | + expose :community_id do |institution,options| | ||
10 | + institution.community.id | ||
11 | + end | ||
12 | + end | ||
13 | +end |
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +require File.dirname(__FILE__) + '/../../../../test/unit/api/test_helper' | ||
2 | +require File.dirname(__FILE__) + '/../helpers/plugin_test_helper' | ||
3 | + | ||
4 | +class GovUserApiTest < ActiveSupport::TestCase | ||
5 | + | ||
6 | + include PluginTestHelper | ||
7 | + | ||
8 | + def setup | ||
9 | + login_api | ||
10 | + environment = Environment.default | ||
11 | + environment.enable_plugin(GovUserPlugin) | ||
12 | + @gov_power = GovernmentalPower.create(:name=>"Some Gov Power") | ||
13 | + @gov_sphere = GovernmentalSphere.create(:name=>"Some Gov Sphere") | ||
14 | + @juridical_nature = JuridicalNature.create(:name => "Autarquia") | ||
15 | + @institution = create_public_institution( | ||
16 | + "Ministerio Publico da Uniao", | ||
17 | + "MPU", | ||
18 | + "BR", | ||
19 | + "DF", | ||
20 | + "Gama", | ||
21 | + @juridical_nature, | ||
22 | + @gov_power, | ||
23 | + @gov_sphere, | ||
24 | + "11.222.333/4444-55") | ||
25 | + end | ||
26 | + | ||
27 | + should 'list all institutions' do | ||
28 | + @institution1 = create_public_institution( | ||
29 | + "Instituicao bacana", | ||
30 | + "IB", | ||
31 | + "BR", | ||
32 | + "DF", | ||
33 | + "Gama", | ||
34 | + @juridical_nature, | ||
35 | + @gov_power, | ||
36 | + @gov_sphere, | ||
37 | + "11.222.333/4444-56" | ||
38 | + ) | ||
39 | + | ||
40 | + get "/api/v1/gov_user/institutions?#{params.to_query}" | ||
41 | + json = JSON.parse(last_response.body) | ||
42 | + assert_equivalent [@institution.id, @institution1.id], json['institutions'].map {|c| c['id']} | ||
43 | + end | ||
44 | + | ||
45 | + should 'get institution by id' do | ||
46 | + get "/api/v1/gov_user/institutions/#{@institution.id}?#{params.to_query}" | ||
47 | + json = JSON.parse(last_response.body) | ||
48 | + assert_equal @institution.id, json["institution"]["id"] | ||
49 | + end | ||
50 | + | ||
51 | +end |
src/noosfero-spb/software_communities/lib/software_communities_plugin/api.rb
@@ -9,13 +9,13 @@ class SoftwareCommunitiesPlugin::API < Grape::API | @@ -9,13 +9,13 @@ class SoftwareCommunitiesPlugin::API < Grape::API | ||
9 | get do | 9 | get do |
10 | authenticate! | 10 | authenticate! |
11 | softwares = select_filtered_collection_of(environment,'communities',params).joins(:software_info) | 11 | softwares = select_filtered_collection_of(environment,'communities',params).joins(:software_info) |
12 | - present softwares, :with => Entities::SoftwareCommunity | 12 | + present softwares.map{|o|o.software_info}, :with => Entities::SoftwareInfo |
13 | end | 13 | end |
14 | 14 | ||
15 | get ':id' do | 15 | get ':id' do |
16 | authenticate! | 16 | authenticate! |
17 | software = SoftwareInfo.find_by_id(params[:id]) | 17 | software = SoftwareInfo.find_by_id(params[:id]) |
18 | - present software.community, :with => Entities::SoftwareCommunity | 18 | + present software, :with => Entities::SoftwareInfo |
19 | end | 19 | end |
20 | 20 | ||
21 | end | 21 | end |
src/noosfero-spb/software_communities/lib/software_communities_plugin/api_entities.rb
1 | module Entities | 1 | module Entities |
2 | class SoftwareInfo < Noosfero::API::Entity | 2 | class SoftwareInfo < Noosfero::API::Entity |
3 | - expose :id, :finality, :repository_link, :public_software | ||
4 | - end | ||
5 | - | ||
6 | - class SoftwareCommunity < Noosfero::API::Entity | ||
7 | - root 'softwares', 'software' | ||
8 | - expose :community, :using => Noosfero::API::Entities::Community do |community, options| | ||
9 | - community | 3 | + root 'software_infos', 'software_info' |
4 | + expose :id, :finality, :repository_link, :public_software, :acronym, :objectives, | ||
5 | + :features,:license_info, :software_languages, :software_databases, :operating_system_names | ||
6 | + expose :community_id do |software_info,options| | ||
7 | + software_info.community.id | ||
10 | end | 8 | end |
11 | - expose :software_info, :using => SoftwareInfo | ||
12 | end | 9 | end |
13 | - | ||
14 | end | 10 | end |
src/noosfero-spb/software_communities/test/unit/api_test.rb
@@ -17,7 +17,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase | @@ -17,7 +17,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase | ||
17 | 17 | ||
18 | get "/api/v1/software_communities?#{params.to_query}" | 18 | get "/api/v1/software_communities?#{params.to_query}" |
19 | json = JSON.parse(last_response.body) | 19 | json = JSON.parse(last_response.body) |
20 | - assert_equivalent [@software_info.id, @software_info2.id], json['softwares'].map {|c| c['software_info']['id']} | 20 | + assert_equivalent [@software_info.id, @software_info2.id], json['software_infos'].map {|c| c['id']} |
21 | end | 21 | end |
22 | 22 | ||
23 | should 'get software by id' do | 23 | should 'get software by id' do |
@@ -25,7 +25,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase | @@ -25,7 +25,7 @@ class SoftwareCommunitiesApiTest < ActiveSupport::TestCase | ||
25 | get "/api/v1/software_communities/#{@software_info.id}?#{params.to_query}" | 25 | get "/api/v1/software_communities/#{@software_info.id}?#{params.to_query}" |
26 | 26 | ||
27 | json = JSON.parse(last_response.body) | 27 | json = JSON.parse(last_response.body) |
28 | - assert_equal @software_info.id, json["software"]['software_info']["id"] | 28 | + assert_equal @software_info.id, json["software_info"]["id"] |
29 | end | 29 | end |
30 | 30 | ||
31 | end | 31 | end |