From 87cde6f4b2c7c05d95e93562fa5ea740087f5003 Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Thu, 24 Mar 2016 12:14:07 -0300 Subject: [PATCH] refactoring boxes routes for environment --- lib/noosfero/api/v1/boxes.rb | 28 +++++++++++++++++++++------- test/unit/api/boxes_test.rb | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/lib/noosfero/api/v1/boxes.rb b/lib/noosfero/api/v1/boxes.rb index 9274434..9c160be 100644 --- a/lib/noosfero/api/v1/boxes.rb +++ b/lib/noosfero/api/v1/boxes.rb @@ -4,7 +4,7 @@ module Noosfero class Boxes < Grape::API - kinds = %w[profile community person enterprise environment] + kinds = %w[profile community person enterprise] kinds.each do |kind| resource kind.pluralize.to_sym do @@ -12,18 +12,32 @@ module Noosfero segment "/:#{kind}_id" do resource :boxes do get do - if (kind == "environment") - container = Environment.find(params["environment_id"]) + profile = environment.send(kind.pluralize).find(params["#{kind}_id"]) + present profile.boxes, :with => Entities::Box + end + end + end + end + + end + + resource :environments do + [ '/default', '/context', ':environment_id' ].each do |route| + segment route do + resource :boxes do + get do + if (route.match(/default/)) + env = Environment.default + elsif (route.match(/context/)) + env = environment else - container = environment.send(kind.pluralize).find(params["#{kind}_id"]) + env = Environment.find(params[:environment_id]) end - present container.boxes, :with => Entities::Box + present env.boxes, :with => Entities::Box end end end - end - end end diff --git a/test/unit/api/boxes_test.rb b/test/unit/api/boxes_test.rb index 289c597..1ba8b6b 100644 --- a/test/unit/api/boxes_test.rb +++ b/test/unit/api/boxes_test.rb @@ -3,7 +3,10 @@ require_relative 'test_helper' class BoxesTest < ActiveSupport::TestCase def setup + @controller = AccountController.new + @request = ActionController::TestRequest.new login_api +# @request = ActionController::TestRequest.new end kinds= %w[Profile Community Person Enterprise Environment] @@ -17,4 +20,23 @@ class BoxesTest < ActiveSupport::TestCase end end + should 'get boxes from default environment' do + Environment.delete_all + environment = fast_create(Environment, :is_default => true) + box = fast_create(Box, :owner_id => environment.id, :owner_type => 'Environment') + get "/api/v1/environments/default/boxes?#{params.to_query}" + json = JSON.parse(last_response.body) + assert_equal box.id, json["boxes"].first["id"] + end + + should 'get boxes from context environment' do + env = fast_create(Environment, :is_default => true) + env2 = fast_create(Environment).domains << Domain.new(:name => 'test.host') + box = fast_create(Box, :owner_id => environment.id, :owner_type => 'Environment') + get "/api/v1/environments/context/boxes?#{params.to_query}" + + json = JSON.parse(last_response.body) + assert_equal box.id, json["boxes"].first["id"] + end + end -- libgit2 0.21.2