2009-09-19 13:10:41 -04:00
|
|
|
require 'abstract_unit'
|
2009-04-07 20:57:20 -04:00
|
|
|
|
|
|
|
module ControllerLayouts
|
|
|
|
class ImplicitController < ::ApplicationController
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2010-01-31 00:27:24 -05:00
|
|
|
"layouts/application.html.erb" => "Main <%= yield %> Layout",
|
2009-05-01 14:40:32 -04:00
|
|
|
"layouts/override.html.erb" => "Override! <%= yield %>",
|
2009-05-13 20:00:36 -04:00
|
|
|
"basic.html.erb" => "Hello world!",
|
2010-01-31 00:27:24 -05:00
|
|
|
"controller_layouts/implicit/layout_false.html.erb" => "hi(layout_false.html.erb)"
|
2009-04-07 20:57:20 -04:00
|
|
|
)]
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-04-07 20:57:20 -04:00
|
|
|
def index
|
|
|
|
render :template => "basic"
|
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-05-01 14:40:32 -04:00
|
|
|
def override
|
|
|
|
render :template => "basic", :layout => "override"
|
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-05-13 20:00:36 -04:00
|
|
|
def layout_false
|
|
|
|
render :layout => false
|
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-05-01 14:40:32 -04:00
|
|
|
def builder_override
|
|
|
|
end
|
2009-04-07 20:57:20 -04:00
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-04-07 20:57:20 -04:00
|
|
|
class ImplicitNameController < ::ApplicationController
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2010-01-31 00:27:24 -05:00
|
|
|
"layouts/controller_layouts/implicit_name.html.erb" => "Implicit <%= yield %> Layout",
|
2009-04-07 20:57:20 -04:00
|
|
|
"basic.html.erb" => "Hello world!"
|
|
|
|
)]
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-04-07 20:57:20 -04:00
|
|
|
def index
|
|
|
|
render :template => "basic"
|
|
|
|
end
|
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class RenderLayoutTest < Rack::TestCase
|
2009-05-20 15:15:06 -04:00
|
|
|
test "rendering a normal template, but using the implicit layout" do
|
|
|
|
get "/controller_layouts/implicit/index"
|
|
|
|
|
2010-01-31 00:27:24 -05:00
|
|
|
assert_body "Main Hello world! Layout"
|
2009-05-20 15:15:06 -04:00
|
|
|
assert_status 200
|
|
|
|
end
|
|
|
|
|
|
|
|
test "rendering a normal template, but using an implicit NAMED layout" do
|
|
|
|
get "/controller_layouts/implicit_name/index"
|
|
|
|
|
2010-01-31 00:27:24 -05:00
|
|
|
assert_body "Implicit Hello world! Layout"
|
2009-05-20 15:15:06 -04:00
|
|
|
assert_status 200
|
|
|
|
end
|
|
|
|
|
|
|
|
test "overriding an implicit layout with render :layout option" do
|
|
|
|
get "/controller_layouts/implicit/override"
|
|
|
|
assert_body "Override! Hello world!"
|
|
|
|
end
|
|
|
|
|
2009-05-01 14:40:32 -04:00
|
|
|
end
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class LayoutOptionsTest < Rack::TestCase
|
2009-05-13 20:00:36 -04:00
|
|
|
testing ControllerLayouts::ImplicitController
|
2009-05-20 15:15:06 -04:00
|
|
|
|
2009-05-13 20:00:36 -04:00
|
|
|
test "rendering with :layout => false leaves out the implicit layout" do
|
|
|
|
get :layout_false
|
2010-01-31 00:27:24 -05:00
|
|
|
assert_response "hi(layout_false.html.erb)"
|
2009-05-13 20:00:36 -04:00
|
|
|
end
|
|
|
|
end
|
2009-05-23 03:39:32 -04:00
|
|
|
|
|
|
|
class MismatchFormatController < ::ApplicationController
|
2009-06-17 18:32:55 -04:00
|
|
|
self.view_paths = [ActionView::FixtureResolver.new(
|
2009-05-23 03:39:32 -04:00
|
|
|
"layouts/application.html.erb" => "<html><%= yield %></html>",
|
2010-01-31 00:27:24 -05:00
|
|
|
"controller_layouts/mismatch_format/index.js.rjs" => "page[:test].ext",
|
2010-08-14 01:13:00 -04:00
|
|
|
"controller_layouts/mismatch_format/implicit.rjs" => "page[:test].ext"
|
2009-05-23 03:39:32 -04:00
|
|
|
)]
|
|
|
|
|
|
|
|
def explicit
|
|
|
|
render :layout => "application"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2009-10-04 00:18:32 -04:00
|
|
|
class MismatchFormatTest < Rack::TestCase
|
2009-05-23 03:39:32 -04:00
|
|
|
testing ControllerLayouts::MismatchFormatController
|
|
|
|
|
|
|
|
test "if JS is selected, an HTML template is not also selected" do
|
2009-08-15 01:32:40 -04:00
|
|
|
get :index, "format" => "js"
|
2010-01-31 00:27:24 -05:00
|
|
|
assert_response "$(\"test\").ext();"
|
2009-05-23 03:39:32 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
test "if JS is implicitly selected, an HTML template is not also selected" do
|
|
|
|
get :implicit
|
2010-01-31 00:27:24 -05:00
|
|
|
assert_response "$(\"test\").ext();"
|
2009-05-23 03:39:32 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
test "if an HTML template is explicitly provides for a JS template, an error is raised" do
|
|
|
|
assert_raises ActionView::MissingTemplate do
|
|
|
|
get :explicit, {}, "action_dispatch.show_exceptions" => false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2009-09-13 17:30:27 -04:00
|
|
|
end
|