Commit 87cde6f4b2c7c05d95e93562fa5ea740087f5003

Authored by Leandro Santos
1 parent b00143d8

refactoring boxes routes for environment

lib/noosfero/api/v1/boxes.rb
... ... @@ -4,7 +4,7 @@ module Noosfero
4 4  
5 5 class Boxes < Grape::API
6 6  
7   - kinds = %w[profile community person enterprise environment]
  7 + kinds = %w[profile community person enterprise]
8 8 kinds.each do |kind|
9 9  
10 10 resource kind.pluralize.to_sym do
... ... @@ -12,18 +12,32 @@ module Noosfero
12 12 segment "/:#{kind}_id" do
13 13 resource :boxes do
14 14 get do
15   - if (kind == "environment")
16   - container = Environment.find(params["environment_id"])
  15 + profile = environment.send(kind.pluralize).find(params["#{kind}_id"])
  16 + present profile.boxes, :with => Entities::Box
  17 + end
  18 + end
  19 + end
  20 + end
  21 +
  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
17 33 else
18   - container = environment.send(kind.pluralize).find(params["#{kind}_id"])
  34 + env = Environment.find(params[:environment_id])
19 35 end
20   - present container.boxes, :with => Entities::Box
  36 + present env.boxes, :with => Entities::Box
21 37 end
22 38 end
23 39 end
24   -
25 40 end
26   -
27 41 end
28 42 end
29 43  
... ...
test/unit/api/boxes_test.rb
... ... @@ -3,7 +3,10 @@ require_relative &#39;test_helper&#39;
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 12 kinds= %w[Profile Community Person Enterprise Environment]
... ... @@ -17,4 +20,23 @@ class BoxesTest &lt; ActiveSupport::TestCase
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
... ...