2009-09-19 13:10:41 -04:00
|
|
|
require 'abstract_unit'
|
2009-03-19 16:35:39 -04:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
module RenderTemplate
|
2009-05-01 20:27:44 -04:00
|
|
|
class WithoutLayoutController < ActionController::Base
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2009-05-14 18:30:35 -04:00
|
|
|
"test/basic.html.erb" => "Hello from basic.html.erb",
|
|
|
|
"shared.html.erb" => "Elastica",
|
|
|
|
"locals.html.erb" => "The secret is <%= secret %>",
|
2010-02-01 02:42:35 -05:00
|
|
|
"xml_template.xml.builder" => "xml.html do\n xml.p 'Hello'\nend",
|
2010-10-07 14:48:21 -04:00
|
|
|
"with_raw.html.erb" => "Hello <%=raw '<strong>this is raw</strong>' %>",
|
|
|
|
"test/with_json.html.erb" => "<%= render :template => 'test/with_json.json' %>",
|
|
|
|
"test/with_json.json.erb" => "<%= render :template => 'test/final' %>",
|
2010-10-07 15:30:19 -04:00
|
|
|
"test/final.json.erb" => "{ final: json }",
|
|
|
|
"test/with_error.html.erb" => "<%= idontexist %>"
|
2009-03-20 21:38:03 -04:00
|
|
|
)]
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def index
|
2009-03-19 16:35:39 -04:00
|
|
|
render :template => "test/basic"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2010-10-07 14:48:21 -04:00
|
|
|
def html_with_json_inside_json
|
|
|
|
render :template => "test/with_json"
|
|
|
|
end
|
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
def index_without_key
|
|
|
|
render "test/basic"
|
|
|
|
end
|
2009-03-19 16:35:39 -04:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def in_top_directory
|
2009-03-19 16:35:39 -04:00
|
|
|
render :template => 'shared'
|
|
|
|
end
|
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def in_top_directory_with_slash
|
2009-03-19 16:35:39 -04:00
|
|
|
render :template => '/shared'
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
def in_top_directory_with_slash_without_key
|
|
|
|
render '/shared'
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 19:33:24 -04:00
|
|
|
def with_locals
|
|
|
|
render :template => "locals", :locals => { :secret => 'area51' }
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
def builder_template
|
|
|
|
render :template => "xml_template"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
|
|
|
def with_raw
|
|
|
|
render :template => "with_raw"
|
|
|
|
end
|
2010-10-07 15:30:19 -04:00
|
|
|
|
|
|
|
def with_error
|
|
|
|
render :template => "test/with_error"
|
|
|
|
end
|
2009-03-19 16:35:39 -04:00
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class TestWithoutLayout < Rack::TestCase
|
2009-05-14 18:30:35 -04:00
|
|
|
testing RenderTemplate::WithoutLayoutController
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a normal template with full path without layout" do
|
|
|
|
get :index
|
|
|
|
assert_response "Hello from basic.html.erb"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a normal template with full path without layout without key" do
|
|
|
|
get :index_without_key
|
|
|
|
assert_response "Hello from basic.html.erb"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a template not in a subdirectory" do
|
|
|
|
get :in_top_directory
|
|
|
|
assert_response "Elastica"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a template not in a subdirectory with a leading slash" do
|
|
|
|
get :in_top_directory_with_slash
|
|
|
|
assert_response "Elastica"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a template not in a subdirectory with a leading slash without key" do
|
|
|
|
get :in_top_directory_with_slash_without_key
|
|
|
|
assert_response "Elastica"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a template with local variables" do
|
|
|
|
get :with_locals
|
|
|
|
assert_response "The secret is area51"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-05-14 18:30:35 -04:00
|
|
|
test "rendering a builder template" do
|
2009-08-15 01:32:40 -04:00
|
|
|
get :builder_template, "format" => "xml"
|
2009-05-14 18:30:35 -04:00
|
|
|
assert_response "<html>\n <p>Hello</p>\n</html>\n"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
|
|
|
test "rendering a template with <%=raw stuff %>" do
|
|
|
|
get :with_raw
|
|
|
|
|
|
|
|
assert_body "Hello <strong>this is raw</strong>"
|
|
|
|
assert_status 200
|
|
|
|
end
|
2010-10-07 14:48:21 -04:00
|
|
|
|
|
|
|
test "rendering a template with renders another template with other format that renders other template in the same format" do
|
|
|
|
get :html_with_json_inside_json
|
|
|
|
assert_content_type "text/html; charset=utf-8"
|
|
|
|
assert_response "{ final: json }"
|
|
|
|
end
|
2010-10-07 15:30:19 -04:00
|
|
|
|
|
|
|
test "rendering a template with error properly exceprts the code" do
|
|
|
|
get :with_error
|
|
|
|
assert_status 500
|
|
|
|
assert_match "undefined local variable or method `idontexist'", response.body
|
|
|
|
end
|
2009-04-29 19:33:24 -04:00
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
class WithLayoutController < ::ApplicationController
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2009-03-20 21:38:03 -04:00
|
|
|
"test/basic.html.erb" => "Hello from basic.html.erb",
|
|
|
|
"shared.html.erb" => "Elastica",
|
|
|
|
"layouts/application.html.erb" => "<%= yield %>, I'm here!",
|
|
|
|
"layouts/greetings.html.erb" => "<%= yield %>, I wish thee well."
|
|
|
|
)]
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def index
|
2009-03-20 21:38:03 -04:00
|
|
|
render :template => "test/basic"
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def with_layout
|
2009-03-20 21:38:03 -04:00
|
|
|
render :template => "test/basic", :layout => true
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def with_layout_false
|
2009-03-20 21:38:03 -04:00
|
|
|
render :template => "test/basic", :layout => false
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def with_layout_nil
|
2009-03-20 21:38:03 -04:00
|
|
|
render :template => "test/basic", :layout => nil
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def with_custom_layout
|
2009-03-20 21:38:03 -04:00
|
|
|
render :template => "test/basic", :layout => "greetings"
|
|
|
|
end
|
|
|
|
end
|
2010-02-01 02:42:35 -05:00
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class TestWithLayout < Rack::TestCase
|
2009-05-20 15:15:06 -04:00
|
|
|
describe "Rendering with :template using implicit or explicit layout"
|
|
|
|
|
|
|
|
test "rendering with implicit layout" do
|
2010-08-06 11:57:58 -04:00
|
|
|
with_routing do |set|
|
|
|
|
set.draw { match ':controller', :action => :index }
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2010-08-06 11:57:58 -04:00
|
|
|
get "/render_template/with_layout"
|
|
|
|
|
|
|
|
assert_body "Hello from basic.html.erb, I'm here!"
|
|
|
|
assert_status 200
|
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
test "rendering with layout => :true" do
|
|
|
|
get "/render_template/with_layout/with_layout"
|
|
|
|
|
|
|
|
assert_body "Hello from basic.html.erb, I'm here!"
|
|
|
|
assert_status 200
|
|
|
|
end
|
|
|
|
|
|
|
|
test "rendering with layout => :false" do
|
|
|
|
get "/render_template/with_layout/with_layout_false"
|
|
|
|
|
|
|
|
assert_body "Hello from basic.html.erb"
|
|
|
|
assert_status 200
|
|
|
|
end
|
|
|
|
|
|
|
|
test "rendering with layout => :nil" do
|
|
|
|
get "/render_template/with_layout/with_layout_nil"
|
|
|
|
|
|
|
|
assert_body "Hello from basic.html.erb"
|
|
|
|
assert_status 200
|
|
|
|
end
|
|
|
|
|
|
|
|
test "rendering layout => 'greetings'" do
|
|
|
|
get "/render_template/with_layout/with_custom_layout"
|
|
|
|
|
|
|
|
assert_body "Hello from basic.html.erb, I wish thee well."
|
|
|
|
assert_status 200
|
|
|
|
end
|
2009-03-20 21:38:03 -04:00
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
module Compatibility
|
2009-05-01 20:27:44 -04:00
|
|
|
class WithoutLayoutController < ActionController::Base
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2009-04-29 14:42:27 -04:00
|
|
|
"test/basic.html.erb" => "Hello from basic.html.erb",
|
|
|
|
"shared.html.erb" => "Elastica"
|
|
|
|
)]
|
2009-03-19 16:35:39 -04:00
|
|
|
|
2009-04-29 14:42:27 -04:00
|
|
|
def with_forward_slash
|
|
|
|
render :template => "/test/basic"
|
|
|
|
end
|
|
|
|
end
|
2009-04-27 21:21:26 -04:00
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class TestTemplateRenderWithForwardSlash < Rack::TestCase
|
2009-05-20 15:15:06 -04:00
|
|
|
test "rendering a normal template with full path starting with a leading slash" do
|
|
|
|
get "/render_template/compatibility/without_layout/with_forward_slash"
|
2009-04-29 14:42:27 -04:00
|
|
|
|
2009-05-20 15:15:06 -04:00
|
|
|
assert_body "Hello from basic.html.erb"
|
|
|
|
assert_status 200
|
|
|
|
end
|
2009-04-27 21:21:26 -04:00
|
|
|
end
|
|
|
|
end
|
2009-09-13 17:30:27 -04:00
|
|
|
end
|