Commit 763189acb5555817ba2a5b37938b04c1c5d49e6e
Exists in
web_steps_improvements
and in
8 other branches
Merge branch 'participa/noosfero-environment-api'
Showing
4 changed files
with
94 additions
and
6 deletions
Show diff stats
lib/noosfero/api/v1/boxes.rb
... | ... | @@ -17,10 +17,28 @@ module Noosfero |
17 | 17 | end |
18 | 18 | end |
19 | 19 | end |
20 | - | |
21 | 20 | end |
22 | 21 | |
23 | 22 | end |
23 | + | |
24 | + resource :environments do | |
25 | + [ '/default', '/context', ':environment_id' ].each do |route| | |
26 | + segment route do | |
27 | + resource :boxes do | |
28 | + get do | |
29 | + if (route.match(/default/)) | |
30 | + env = Environment.default | |
31 | + elsif (route.match(/context/)) | |
32 | + env = environment | |
33 | + else | |
34 | + env = Environment.find(params[:environment_id]) | |
35 | + end | |
36 | + present env.boxes, :with => Entities::Box | |
37 | + end | |
38 | + end | |
39 | + end | |
40 | + end | |
41 | + end | |
24 | 42 | end |
25 | 43 | |
26 | 44 | end | ... | ... |
lib/noosfero/api/v1/environments.rb
... | ... | @@ -9,7 +9,17 @@ module Noosfero |
9 | 9 | get '/signup_person_fields' do |
10 | 10 | present environment.signup_person_fields |
11 | 11 | end |
12 | - | |
12 | + | |
13 | + get ':id' do | |
14 | + if (params[:id] == "default") | |
15 | + present Environment.default | |
16 | + elsif (params[:id] == "context") | |
17 | + present environment | |
18 | + else | |
19 | + present Environment.find(params[:id]) | |
20 | + end | |
21 | + end | |
22 | + | |
13 | 23 | end |
14 | 24 | |
15 | 25 | end | ... | ... |
test/unit/api/boxes_test.rb
... | ... | @@ -3,18 +3,40 @@ require_relative 'test_helper' |
3 | 3 | class BoxesTest < ActiveSupport::TestCase |
4 | 4 | |
5 | 5 | def setup |
6 | + @controller = AccountController.new | |
7 | + @request = ActionController::TestRequest.new | |
6 | 8 | login_api |
9 | +# @request = ActionController::TestRequest.new | |
7 | 10 | end |
8 | 11 | |
9 | - kinds= %w[Profile Community Person Enterprise] | |
12 | + kinds= %w[Profile Community Person Enterprise Environment] | |
10 | 13 | kinds.each do |kind| |
11 | 14 | should "get_boxes_from_#{kind.downcase.pluralize}" do |
12 | - profile_obj = fast_create(kind.constantize) | |
13 | - box = fast_create(Box, :owner_id => profile_obj.id, :owner_type => "Profile") | |
14 | - get "/api/v1/#{kind.downcase.pluralize}/#{profile_obj.id}/boxes?#{params.to_query}" | |
15 | + context_obj = fast_create(kind.constantize) | |
16 | + box = fast_create(Box, :owner_id => context_obj.id, :owner_type => (kind == 'Environment') ? 'Environment' : 'Profile') | |
17 | + get "/api/v1/#{kind.downcase.pluralize}/#{context_obj.id}/boxes?#{params.to_query}" | |
15 | 18 | json = JSON.parse(last_response.body) |
16 | 19 | assert_equal box.id, json["boxes"].first["id"] |
17 | 20 | end |
18 | 21 | end |
19 | 22 | |
23 | + should 'get boxes from default environment' do | |
24 | + Environment.delete_all | |
25 | + environment = fast_create(Environment, :is_default => true) | |
26 | + box = fast_create(Box, :owner_id => environment.id, :owner_type => 'Environment') | |
27 | + get "/api/v1/environments/default/boxes?#{params.to_query}" | |
28 | + json = JSON.parse(last_response.body) | |
29 | + assert_equal box.id, json["boxes"].first["id"] | |
30 | + end | |
31 | + | |
32 | + should 'get boxes from context environment' do | |
33 | + env = fast_create(Environment, :is_default => true) | |
34 | + env2 = fast_create(Environment).domains << Domain.new(:name => 'test.host') | |
35 | + box = fast_create(Box, :owner_id => environment.id, :owner_type => 'Environment') | |
36 | + get "/api/v1/environments/context/boxes?#{params.to_query}" | |
37 | + | |
38 | + json = JSON.parse(last_response.body) | |
39 | + assert_equal box.id, json["boxes"].first["id"] | |
40 | + end | |
41 | + | |
20 | 42 | end | ... | ... |
... | ... | @@ -0,0 +1,38 @@ |
1 | +require_relative 'test_helper' | |
2 | + | |
3 | +class EnvironmentTest < ActiveSupport::TestCase | |
4 | + | |
5 | + def setup | |
6 | + @person = create_user('testing').person | |
7 | + end | |
8 | + attr_reader :person | |
9 | + | |
10 | + should 'return the default environment' do | |
11 | + environment = Environment.default | |
12 | + get "/api/v1/environment/default" | |
13 | + json = JSON.parse(last_response.body) | |
14 | + assert_equal environment.id, json['id'] | |
15 | + end | |
16 | + | |
17 | + should 'return created environment' do | |
18 | + environment = fast_create(Environment) | |
19 | + default_env = Environment.default | |
20 | + assert_not_equal environment.id, default_env.id | |
21 | + get "/api/v1/environment/#{environment.id}" | |
22 | + json = JSON.parse(last_response.body) | |
23 | + assert_equal environment.id, json['id'] | |
24 | + end | |
25 | + | |
26 | + should 'return context environment' do | |
27 | + context_env = fast_create(Environment) | |
28 | + context_env.name = "example org" | |
29 | + context_env.save | |
30 | + context_env.domains<< Domain.new(:name => 'example.org') | |
31 | + default_env = Environment.default | |
32 | + assert_not_equal context_env.id, default_env.id | |
33 | + get "/api/v1/environment/context" | |
34 | + json = JSON.parse(last_response.body) | |
35 | + assert_equal context_env.id, json['id'] | |
36 | + end | |
37 | + | |
38 | +end | ... | ... |