Revision 9a3248b3
Added by Dominic Cleal over 10 years ago
config/initializers/rabl_init.rb | ||
---|---|---|
class Engine
|
||
|
||
def api_version
|
||
response.headers["Foreman_api_version"]
|
||
respond_to?(:response) ? response.headers["Foreman_api_version"] : '1'
|
||
end
|
||
|
||
def default_options
|
||
... | ... | |
# 2) custom - pass ?params[:root_name]=custom_name in URL
|
||
def data_name(data_token)
|
||
# custom object root
|
||
return params['root_name'] if params['root_name'].present? && !['false', false].include?(params['root_name'])
|
||
return params['root_name'] if respond_to?(:params) && params['root_name'].present? && !['false', false].include?(params['root_name'])
|
||
# no object root for v2
|
||
return nil if api_version.to_i > 1 || ['false', false].include?(params['root_name'])
|
||
return nil if !respond_to?(:params) || api_version.to_i > 1 || ['false', false].include?(params['root_name'])
|
||
# otherwise return super since v1 has object root (config.include_child_root = true)
|
||
super
|
||
end
|
test/unit/rabl_test.rb | ||
---|---|---|
require 'test_helper'
|
||
require 'ostruct'
|
||
|
||
class RablTest < ActiveSupport::TestCase
|
||
test 'render of single template' do
|
||
rendered = Rabl.render(OpenStruct.new(:name => 'foo'),
|
||
'api/v2/domains/show',
|
||
:format => :json,
|
||
:view_path => 'app/views')
|
||
loaded = JSON.load(rendered)
|
||
assert_equal Hash, loaded.class
|
||
assert_equal 'foo', loaded['name']
|
||
end
|
||
|
||
test 'render of collection template' do
|
||
rendered = Rabl.render([OpenStruct.new(:name => 'foo')],
|
||
'api/v2/domains/index',
|
||
:format => :json,
|
||
:view_path => 'app/views')
|
||
loaded = JSON.load(rendered)
|
||
assert_equal Array, loaded.class
|
||
assert_equal Hash, loaded[0].class
|
||
assert_equal 'foo', loaded[0]['name']
|
||
end
|
||
end
|
Also available in: Unified diff
fixes #4005 - ensure standalone Rabl.render works outside of a controller
(cherry picked from commit 858708c466398ac5f42bb1bb0fd6c1e531e31385)