Commit f49ee41c9416983e5f79e91df408a3f1877bcbb3

Authored by Leandro Santos
Committed by Rodrigo Souto
1 parent 44dd0a25

adding enterprises endpoints

lib/api/entities.rb
@@ -32,7 +32,9 @@ module API @@ -32,7 +32,9 @@ module API
32 end 32 end
33 33
34 class Person < Profile;end; 34 class Person < Profile;end;
35 - class Enterprise < Profile;end; 35 + class Enterprise < Profile
  36 + root 'enterprises', 'enterprise'
  37 + end
36 class Community < Profile 38 class Community < Profile
37 root 'communities', 'community' 39 root 'communities', 'community'
38 expose :description 40 expose :description
lib/api/v1/enterprises.rb
@@ -17,16 +17,38 @@ module API @@ -17,16 +17,38 @@ module API
17 # GET /enterprises?reference_id=10&limit=10&oldest 17 # GET /enterprises?reference_id=10&limit=10&oldest
18 get do 18 get do
19 enterprises = select_filtered_collection_of(environment, 'enterprises', params) 19 enterprises = select_filtered_collection_of(environment, 'enterprises', params)
  20 + enterprises = enterprises.visible_for_person(current_person)
20 present enterprises, :with => Entities::Enterprise 21 present enterprises, :with => Entities::Enterprise
21 end 22 end
22 23
23 - desc "Return one environment by id" 24 + desc "Return one enterprise by id"
24 get ':id' do 25 get ':id' do
25 - present environment.enterprises.find(params[:id]), :with => Entities::Enterprise 26 + enterprise = environment.enterprises.visible.find_by_id(params[:id])
  27 + present enterprise, :with => Entities::Enterprise
26 end 28 end
27 29
28 end 30 end
29 31
  32 + resource :people do
  33 +
  34 + segment '/:person_id' do
  35 +
  36 + resource :enterprises do
  37 +
  38 + get do
  39 + person = environment.people.find(params[:person_id])
  40 + enterprises = select_filtered_collection_of(person, 'enterprises', params)
  41 + enterprises = enterprises.visible
  42 + present enterprises, :with => Entities::Enterprise
  43 + end
  44 +
  45 + end
  46 +
  47 + end
  48 +
  49 + end
  50 +
  51 +
30 end 52 end
31 end 53 end
32 end 54 end
test/unit/api/enterprises_test.rb
@@ -6,24 +6,95 @@ class EnterprisesTest &lt; ActiveSupport::TestCase @@ -6,24 +6,95 @@ class EnterprisesTest &lt; ActiveSupport::TestCase
6 login_api 6 login_api
7 end 7 end
8 8
9 - should 'list enterprises' do  
10 - enterprise1 = fast_create(Enterprise) 9 + should 'list all enterprises' do
  10 + enterprise1 = fast_create(Enterprise, :public_profile => true)
11 enterprise2 = fast_create(Enterprise) 11 enterprise2 = fast_create(Enterprise)
  12 + get "/api/v1/enterprises?#{params.to_query}"
  13 + json = JSON.parse(last_response.body)
  14 + assert_equivalent [enterprise1.id, enterprise2.id], json['enterprises'].map {|c| c['id']}
  15 + end
  16 +
  17 + should 'not list invisible enterprises' do
  18 + enterprise1 = fast_create(Enterprise)
  19 + fast_create(Enterprise, :visible => false)
  20 +
  21 + get "/api/v1/enterprises?#{params.to_query}"
  22 + json = JSON.parse(last_response.body)
  23 + assert_equal [enterprise1.id], json['enterprises'].map {|c| c['id']}
  24 + end
  25 +
  26 + should 'not list private enterprises without permission' do
  27 + enterprise1 = fast_create(Enterprise)
  28 + fast_create(Enterprise, :public_profile => false)
  29 +
  30 + get "/api/v1/enterprises?#{params.to_query}"
  31 + json = JSON.parse(last_response.body)
  32 + assert_equal [enterprise1.id], json['enterprises'].map {|c| c['id']}
  33 + end
  34 +
  35 + should 'list private enterprise for members' do
  36 + c1 = fast_create(Enterprise)
  37 + c2 = fast_create(Enterprise, :public_profile => false)
  38 + c2.add_member(person)
12 39
13 get "/api/v1/enterprises?#{params.to_query}" 40 get "/api/v1/enterprises?#{params.to_query}"
14 json = JSON.parse(last_response.body) 41 json = JSON.parse(last_response.body)
  42 + assert_equivalent [c1.id, c2.id], json['enterprises'].map {|c| c['id']}
  43 + end
  44 +
  45 + should 'get enterprise' do
  46 + enterprise = fast_create(Enterprise)
  47 +
  48 + get "/api/v1/enterprises/#{enterprise.id}?#{params.to_query}"
  49 + json = JSON.parse(last_response.body)
  50 + assert_equal enterprise.id, json['enterprise']['id']
  51 + end
  52 +
  53 + should 'not get invisible enterprise' do
  54 + enterprise = fast_create(Enterprise, :visible => false)
15 55
16 - assert_includes json.map {|c| c['id']}, enterprise1.id  
17 - assert_includes json.map {|c| c['id']}, enterprise2.id 56 + get "/api/v1/enterprises/#{enterprise.id}?#{params.to_query}"
  57 + json = JSON.parse(last_response.body)
  58 + assert json['enterprise'].blank?
18 end 59 end
19 60
20 - should 'return one enterprise by id' do 61 + should 'not get private enterprises without permission' do
21 enterprise = fast_create(Enterprise) 62 enterprise = fast_create(Enterprise)
  63 + fast_create(Enterprise, :public_profile => false)
  64 +
  65 + get "/api/v1/enterprises/#{enterprise.id}?#{params.to_query}"
  66 + json = JSON.parse(last_response.body)
  67 + assert_equal enterprise.id, json['enterprise']['id']
  68 + end
  69 +
  70 + should 'get private enterprise for members' do
  71 + enterprise = fast_create(Enterprise, :public_profile => false)
  72 + enterprise.add_member(person)
22 73
23 get "/api/v1/enterprises/#{enterprise.id}?#{params.to_query}" 74 get "/api/v1/enterprises/#{enterprise.id}?#{params.to_query}"
24 json = JSON.parse(last_response.body) 75 json = JSON.parse(last_response.body)
  76 + assert_equal enterprise.id, json['enterprise']['id']
  77 + end
  78 +
  79 + should 'list person enterprises' do
  80 + enterprise = fast_create(Enterprise)
  81 + fast_create(Enterprise)
  82 + enterprise.add_member(person)
  83 +
  84 + get "/api/v1/people/#{person.id}/enterprises?#{params.to_query}"
  85 + json = JSON.parse(last_response.body)
  86 + assert_equivalent [enterprise.id], json['enterprises'].map {|c| c['id']}
  87 + end
25 88
26 - assert_equal enterprise.id, json['id'] 89 + should 'not list person enterprises invisible' do
  90 + c1 = fast_create(Enterprise)
  91 + c2 = fast_create(Enterprise, :visible => false)
  92 + c1.add_member(person)
  93 + c2.add_member(person)
  94 +
  95 + get "/api/v1/people/#{person.id}/enterprises?#{params.to_query}"
  96 + json = JSON.parse(last_response.body)
  97 + assert_equivalent [c1.id], json['enterprises'].map {|c| c['id']}
27 end 98 end
28 99
29 end 100 end