Replace the class level Rack::Test DSL with the regular integration tests DSL

This commit is contained in:
Pratik Naik
2009-05-20 21:15:06 +02:00
parent 6761759a90
commit c03b0ca7eb
10 changed files with 495 additions and 582 deletions

View File

@@ -10,78 +10,60 @@ module Dispatching
def modify_response_body
self.response_body = "success"
end
def modify_response_body_twice
ret = (self.response_body = "success")
self.response_body = "#{ret}!"
end
def modify_response_headers
end
end
class TestSimpleDispatch < SimpleRouteCase
get "/dispatching/simple/index"
test "sets the body" do
assert_body "success"
end
test "sets the status code" do
assert_status 200
end
test "sets the content type" do
assert_content_type "text/html; charset=utf-8"
end
test "sets the content length" do
assert_header "Content-Length", "7"
end
end
# :api: plugin
class TestDirectResponseMod < SimpleRouteCase
get "/dispatching/simple/modify_response_body"
test "sets the body" do
assert_body "success"
end
test "setting the body manually sets the content length" do
assert_header "Content-Length", "7"
end
end
# :api: plugin
class TestDirectResponseModTwice < SimpleRouteCase
get "/dispatching/simple/modify_response_body_twice"
test "self.response_body= returns the body being set" do
assert_body "success!"
end
test "updating the response body updates the content length" do
assert_header "Content-Length", "8"
end
end
class EmptyController < ActionController::Base ; end
module Submodule
class ContainedEmptyController < ActionController::Base ; end
end
class ControllerClassTests < Test::Unit::TestCase
def test_controller_path
class BaseTest < SimpleRouteCase
# :api: plugin
test "simple dispatching" do
get "/dispatching/simple/index"
assert_body "success"
assert_status 200
assert_content_type "text/html; charset=utf-8"
assert_header "Content-Length", "7"
end
# :api: plugin
test "directly modifying response body" do
get "/dispatching/simple/modify_response_body"
assert_body "success"
assert_header "Content-Length", "7" # setting the body manually sets the content length
end
# :api: plugin
test "directly modifying response body twice" do
get "/dispatching/simple/modify_response_body_twice"
assert_body "success!"
assert_header "Content-Length", "8"
end
test "controller path" do
assert_equal 'dispatching/empty', EmptyController.controller_path
assert_equal EmptyController.controller_path, EmptyController.new.controller_path
end
test "namespaced controller path" do
assert_equal 'dispatching/submodule/contained_empty', Submodule::ContainedEmptyController.controller_path
assert_equal Submodule::ContainedEmptyController.controller_path, Submodule::ContainedEmptyController.new.controller_path
end
def test_controller_name
test "controller name" do
assert_equal 'empty', EmptyController.controller_name
assert_equal 'contained_empty', Submodule::ContainedEmptyController.controller_name
end

View File

@@ -5,107 +5,107 @@ module ContentType
def index
render :text => "Hello world!"
end
def set_on_response_obj
response.content_type = Mime::RSS
render :text => "Hello world!"
end
def set_on_render
render :text => "Hello world!", :content_type => Mime::RSS
end
end
class TestDefault < SimpleRouteCase
describe "a default response is HTML and UTF8"
get "/content_type/base"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-8"
end
class TestSetOnResponseObj < SimpleRouteCase
describe "setting the content type of the response directly on the response object"
get "/content_type/base/set_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "application/rss+xml; charset=utf-8"
end
class TestSetOnRender < SimpleRouteCase
describe "setting the content type of the response as an option to render"
get "/content_type/base/set_on_render"
assert_body "Hello world!"
assert_header "Content-Type", "application/rss+xml; charset=utf-8"
end
class ImpliedController < ActionController::Base
# Template's mime type is used if no content_type is specified
self.view_paths = [ActionView::Template::FixturePath.new(
"content_type/implied/i_am_html_erb.html.erb" => "Hello world!",
"content_type/implied/i_am_xml_erb.xml.erb" => "<xml>Hello world!</xml>",
"content_type/implied/i_am_html_builder.html.builder" => "xml.p 'Hello'",
"content_type/implied/i_am_xml_builder.xml.builder" => "xml.awesome 'Hello'"
)]
def i_am_html_erb() end
def i_am_xml_erb() end
def i_am_html_builder() end
def i_am_xml_builder() end
end
class TestImpliedController < SimpleRouteCase
describe "the template's mime type is used if no content_type is specified"
test "sets Content-Type as text/html when rendering *.html.erb" do
get "/content_type/implied/i_am_html_erb"
assert_header "Content-Type", "text/html; charset=utf-8"
end
test "sets Content-Type as application/xml when rendering *.xml.erb" do
get "/content_type/implied/i_am_xml_erb"
assert_header "Content-Type", "application/xml; charset=utf-8"
end
test "sets Content-Type as text/html when rendering *.html.builder" do
get "/content_type/implied/i_am_html_builder"
assert_header "Content-Type", "text/html; charset=utf-8"
end
test "sets Content-Type as application/xml when rendering *.xml.builder" do
get "/content_type/implied/i_am_xml_builder"
assert_header "Content-Type", "application/xml; charset=utf-8"
end
end
end
module Charset
class BaseController < ActionController::Base
class CharsetController < ActionController::Base
def set_on_response_obj
response.charset = "utf-16"
render :text => "Hello world!"
end
def set_as_nil_on_response_obj
response.charset = nil
render :text => "Hello world!"
end
end
class TestSetOnResponseObj < SimpleRouteCase
describe "setting the charset of the response directly on the response object"
get "/charset/base/set_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-16"
class ExplicitContentTypeTest < SimpleRouteCase
test "default response is HTML and UTF8" do
get "/content_type/base"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-8"
end
test "setting the content type of the response directly on the response object" do
get "/content_type/base/set_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "application/rss+xml; charset=utf-8"
end
test "setting the content type of the response as an option to render" do
get "/content_type/base/set_on_render"
assert_body "Hello world!"
assert_header "Content-Type", "application/rss+xml; charset=utf-8"
end
end
class TestSetAsNilOnResponseObj < SimpleRouteCase
describe "setting the charset of the response as nil directly on the response object"
get "/charset/base/set_as_nil_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-8"
class ImpliedContentTypeTest < SimpleRouteCase
test "sets Content-Type as text/html when rendering *.html.erb" do
get "/content_type/implied/i_am_html_erb"
assert_header "Content-Type", "text/html; charset=utf-8"
end
test "sets Content-Type as application/xml when rendering *.xml.erb" do
get "/content_type/implied/i_am_xml_erb"
assert_header "Content-Type", "application/xml; charset=utf-8"
end
test "sets Content-Type as text/html when rendering *.html.builder" do
get "/content_type/implied/i_am_html_builder"
assert_header "Content-Type", "text/html; charset=utf-8"
end
test "sets Content-Type as application/xml when rendering *.xml.builder" do
get "/content_type/implied/i_am_xml_builder"
assert_header "Content-Type", "application/xml; charset=utf-8"
end
end
end
class ExplicitCharsetTest < SimpleRouteCase
test "setting the charset of the response directly on the response object" do
get "/content_type/charset/set_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-16"
end
test "setting the charset of the response as nil directly on the response object" do
get "/content_type/charset/set_as_nil_on_response_obj"
assert_body "Hello world!"
assert_header "Content-Type", "text/html; charset=utf-8"
end
end
end

View File

@@ -1,47 +1,46 @@
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
module Etags
class BasicController < ActionController::Base
self.view_paths = [ActionView::Template::FixturePath.new(
"etags/basic/base.html.erb" => "Hello from without_layout.html.erb",
"layouts/etags.html.erb" => "teh <%= yield %> tagz"
)]
def without_layout
render :action => "base"
end
def with_layout
render :action => "base", :layout => "etag"
end
end
class TestBasic < SimpleRouteCase
class EtagTest < SimpleRouteCase
describe "Rendering without any special etag options returns an etag that is an MD5 hash of its text"
test "an action without a layout" do
get "/etags/basic/without_layout"
body = "Hello from without_layout.html.erb"
assert_body body
assert_header "Etag", etag_for(body)
assert_status 200
end
test "an action with a layout" do
get "/etags/basic/with_layout"
body = "teh Hello from without_layout.html.erb tagz"
assert_body body
assert_header "Etag", etag_for(body)
assert_status 200
end
private
def etag_for(text)
%("#{Digest::MD5.hexdigest(text)}")
end
end
end

View File

@@ -1,26 +1,24 @@
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
module RenderAction
# This has no layout and it works
class BasicController < ActionController::Base
self.view_paths = [ActionView::Template::FixturePath.new(
"render_action/basic/hello_world.html.erb" => "Hello world!"
)]
def hello_world
render :action => "hello_world"
end
def hello_world_as_string
render "hello_world"
end
def hello_world_as_string_with_options
render "hello_world", :status => 404
end
def hello_world_as_symbol
render :hello_world
end
@@ -28,107 +26,95 @@ module RenderAction
def hello_world_with_symbol
render :action => :hello_world
end
def hello_world_with_layout
render :action => "hello_world", :layout => true
end
def hello_world_with_layout_false
render :action => "hello_world", :layout => false
end
def hello_world_with_layout_nil
render :action => "hello_world", :layout => nil
end
def hello_world_with_custom_layout
render :action => "hello_world", :layout => "greetings"
end
end
class TestBasic < SimpleRouteCase
describe "Rendering an action using :action => <String>"
get "/render_action/basic/hello_world"
assert_body "Hello world!"
assert_status 200
class RenderActionTest < SimpleRouteCase
test "rendering an action using :action => <String>" do
get "/render_action/basic/hello_world"
assert_body "Hello world!"
assert_status 200
end
test "rendering an action using '<action>'" do
get "/render_action/basic/hello_world_as_string"
assert_body "Hello world!"
assert_status 200
end
test "rendering an action using '<action>' and options" do
get "/render_action/basic/hello_world_as_string_with_options"
assert_body "Hello world!"
assert_status 404
end
test "rendering an action using :action" do
get "/render_action/basic/hello_world_as_symbol"
assert_body "Hello world!"
assert_status 200
end
test "rendering an action using :action => :hello_world" do
get "/render_action/basic/hello_world_with_symbol"
assert_body "Hello world!"
assert_status 200
end
end
class TestWithString < SimpleRouteCase
describe "Render an action using 'hello_world'"
get "/render_action/basic/hello_world_as_string"
assert_body "Hello world!"
assert_status 200
end
class TestWithStringAndOptions < SimpleRouteCase
describe "Render an action using 'hello_world'"
get "/render_action/basic/hello_world_as_string_with_options"
assert_body "Hello world!"
assert_status 404
end
class TestAsSymbol < SimpleRouteCase
describe "Render an action using :hello_world"
get "/render_action/basic/hello_world_as_symbol"
assert_body "Hello world!"
assert_status 200
end
class TestWithSymbol < SimpleRouteCase
describe "Render an action using :action => :hello_world"
get "/render_action/basic/hello_world_with_symbol"
assert_body "Hello world!"
assert_status 200
end
class TestLayoutTrue < SimpleRouteCase
describe "rendering a normal template with full path with layout => true"
test "raises an exception when requesting a layout and none exist" do
assert_raise(ArgumentError, /no default layout for RenderAction::BasicController in/) do
class RenderLayoutTest < SimpleRouteCase
describe "Both <controller_path>.html.erb and application.html.erb are missing"
test "rendering with layout => true" do
assert_raise(ArgumentError, /no default layout for RenderAction::BasicController in/) do
get "/render_action/basic/hello_world_with_layout", {}, "action_dispatch.show_exceptions" => false
end
end
end
class TestLayoutFalse < SimpleRouteCase
describe "rendering a normal template with full path with layout => false"
get "/render_action/basic/hello_world_with_layout_false"
assert_body "Hello world!"
assert_status 200
end
class TestLayoutNil < SimpleRouteCase
describe "rendering a normal template with full path with layout => :nil"
get "/render_action/basic/hello_world_with_layout_nil"
assert_body "Hello world!"
assert_status 200
end
class TestCustomLayout < SimpleRouteCase
describe "rendering a normal template with full path with layout => 'greetings'"
test "raises an exception when requesting a layout that does not exist" do
test "rendering with layout => false" do
get "/render_action/basic/hello_world_with_layout_false"
assert_body "Hello world!"
assert_status 200
end
test "rendering with layout => :nil" do
get "/render_action/basic/hello_world_with_layout_nil"
assert_body "Hello world!"
assert_status 200
end
test "rendering with layout => 'greetings'" do
assert_raise(ActionView::MissingTemplate) do
get "/render_action/basic/hello_world_with_custom_layout", {}, "action_dispatch.show_exceptions" => false
end
end
end
end
module RenderActionWithApplicationLayout
# # ==== Render actions with layouts ====
class BasicController < ::ApplicationController
# Set the view path to an application view structure with layouts
self.view_paths = self.view_paths = [ActionView::Template::FixturePath.new(
@@ -138,205 +124,197 @@ module RenderActionWithApplicationLayout
"layouts/greetings.html.erb" => "Greetings <%= yield %> Bai",
"layouts/builder.html.builder" => "xml.html do\n xml << yield\nend"
)]
def hello_world
render :action => "hello_world"
end
def hello_world_with_layout
render :action => "hello_world", :layout => true
end
def hello_world_with_layout_false
render :action => "hello_world", :layout => false
end
def hello_world_with_layout_nil
render :action => "hello_world", :layout => nil
end
def hello_world_with_custom_layout
render :action => "hello_world", :layout => "greetings"
end
def with_builder_and_layout
render :action => "hello", :layout => "builder"
end
end
class TestDefaultLayout < SimpleRouteCase
describe %(
Render hello_world and implicitly use application.html.erb as a layout if
no layout is specified and no controller layout is present
)
get "/render_action_with_application_layout/basic/hello_world"
assert_body "OHAI Hello World! KTHXBAI"
assert_status 200
class LayoutTest < SimpleRouteCase
describe "Only application.html.erb is present and <controller_path>.html.erb is missing"
test "rendering implicit application.html.erb as layout" do
get "/render_action_with_application_layout/basic/hello_world"
assert_body "OHAI Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_application_layout/basic/hello_world_with_layout"
assert_body "OHAI Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => false" do
get "/render_action_with_application_layout/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
test "rendering with layout => :nil" do
get "/render_action_with_application_layout/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
test "rendering with layout => 'greetings'" do
get "/render_action_with_application_layout/basic/hello_world_with_custom_layout"
assert_body "Greetings Hello World! Bai"
assert_status 200
end
end
class TestLayoutTrue < SimpleRouteCase
describe "rendering a normal template with full path with layout => true"
get "/render_action_with_application_layout/basic/hello_world_with_layout"
assert_body "OHAI Hello World! KTHXBAI"
assert_status 200
end
class TestLayoutFalse < SimpleRouteCase
describe "rendering a normal template with full path with layout => false"
get "/render_action_with_application_layout/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
class TestLayoutNil < SimpleRouteCase
describe "rendering a normal template with full path with layout => :nil"
get "/render_action_with_application_layout/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
class TestCustomLayout < SimpleRouteCase
describe "rendering a normal template with full path with layout => 'greetings'"
get "/render_action_with_application_layout/basic/hello_world_with_custom_layout"
assert_body "Greetings Hello World! Bai"
assert_status 200
end
class TestLayout < SimpleRouteCase
testing BasicController
test "builder works with layouts" do
get :with_builder_and_layout
assert_response "<html>\n<p>Omg</p>\n</html>\n"
end
end
end
module RenderActionWithControllerLayout
class BasicController < ActionController::Base
self.view_paths = self.view_paths = [ActionView::Template::FixturePath.new(
"render_action_with_controller_layout/basic/hello_world.html.erb" => "Hello World!",
"layouts/render_action_with_controller_layout/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
)]
def hello_world
render :action => "hello_world"
end
def hello_world_with_layout
render :action => "hello_world", :layout => true
end
def hello_world_with_layout_false
render :action => "hello_world", :layout => false
end
def hello_world_with_layout_nil
render :action => "hello_world", :layout => nil
end
def hello_world_with_custom_layout
render :action => "hello_world", :layout => "greetings"
end
end
class TestControllerLayout < SimpleRouteCase
describe "Render hello_world and implicitly use <controller_path>.html.erb as a layout."
get "/render_action_with_controller_layout/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
class ControllerLayoutTest < SimpleRouteCase
describe "Only <controller_path>.html.erb is present and application.html.erb is missing"
test "render hello_world and implicitly use <controller_path>.html.erb as a layout." do
get "/render_action_with_controller_layout/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_controller_layout/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => false" do
get "/render_action_with_controller_layout/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
test "rendering with layout => :nil" do
get "/render_action_with_controller_layout/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
end
class TestLayoutTrue < SimpleRouteCase
describe "rendering a normal template with full path with layout => true"
get "/render_action_with_controller_layout/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
class TestLayoutFalse < SimpleRouteCase
describe "rendering a normal template with full path with layout => false"
get "/render_action_with_controller_layout/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
class TestLayoutNil < SimpleRouteCase
describe "rendering a normal template with full path with layout => :nil"
get "/render_action_with_controller_layout/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
end
module RenderActionWithBothLayouts
class BasicController < ActionController::Base
self.view_paths = [ActionView::Template::FixturePath.new({
"render_action_with_both_layouts/basic/hello_world.html.erb" => "Hello World!",
"layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI",
"layouts/render_action_with_both_layouts/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
})]
def hello_world
render :action => "hello_world"
end
def hello_world_with_layout
render :action => "hello_world", :layout => true
end
def hello_world_with_layout_false
render :action => "hello_world", :layout => false
end
def hello_world_with_layout_nil
render :action => "hello_world", :layout => nil
end
end
class TestControllerLayoutFirst < SimpleRouteCase
describe "Render hello_world and implicitly use <controller_path>.html.erb over application.html.erb as a layout"
get "/render_action_with_both_layouts/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
class ControllerLayoutTest < SimpleRouteCase
describe "Both <controller_path>.html.erb and application.html.erb are present"
test "rendering implicitly use <controller_path>.html.erb over application.html.erb as a layout" do
get "/render_action_with_both_layouts/basic/hello_world"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => true" do
get "/render_action_with_both_layouts/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
test "rendering with layout => false" do
get "/render_action_with_both_layouts/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
test "rendering with layout => :nil" do
get "/render_action_with_both_layouts/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
end
class TestLayoutTrue < SimpleRouteCase
describe "rendering a normal template with full path with layout => true"
get "/render_action_with_both_layouts/basic/hello_world_with_layout"
assert_body "With Controller Layout! Hello World! KTHXBAI"
assert_status 200
end
class TestLayoutFalse < SimpleRouteCase
describe "rendering a normal template with full path with layout => false"
get "/render_action_with_both_layouts/basic/hello_world_with_layout_false"
assert_body "Hello World!"
assert_status 200
end
class TestLayoutNil < SimpleRouteCase
describe "rendering a normal template with full path with layout => :nil"
get "/render_action_with_both_layouts/basic/hello_world_with_layout_nil"
assert_body "Hello World!"
assert_status 200
end
end

View File

@@ -10,19 +10,19 @@ module RenderImplicitAction
def hello_world() end
end
class TestImplicitRender < SimpleRouteCase
describe "render a simple action with new explicit call to render"
get "/render_implicit_action/simple/hello_world"
assert_body "Hello world!"
assert_status 200
end
class TestImplicitWithSpecialCharactersRender < SimpleRouteCase
describe "render an action with a missing method and has special characters"
get "/render_implicit_action/simple/hyphen-ated"
assert_body "Hello hyphen-ated!"
assert_status 200
class RenderImplicitActionTest < SimpleRouteCase
test "render a simple action with new explicit call to render" do
get "/render_implicit_action/simple/hello_world"
assert_body "Hello world!"
assert_status 200
end
test "render an action with a missing method and has special characters" do
get "/render_implicit_action/simple/hyphen-ated"
assert_body "Hello hyphen-ated!"
assert_status 200
end
end
end

View File

@@ -2,69 +2,65 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
module ControllerLayouts
class ImplicitController < ::ApplicationController
self.view_paths = [ActionView::Template::FixturePath.new(
"layouts/application.html.erb" => "OMG <%= yield %> KTHXBAI",
"layouts/override.html.erb" => "Override! <%= yield %>",
"basic.html.erb" => "Hello world!",
"controller_layouts/implicit/layout_false.html.erb" => "hai(layout_false.html.erb)"
)]
def index
render :template => "basic"
end
def override
render :template => "basic", :layout => "override"
end
def layout_false
render :layout => false
end
def builder_override
end
end
class TestImplicitLayout < SimpleRouteCase
describe "rendering a normal template, but using the implicit layout"
get "/controller_layouts/implicit/index"
assert_body "OMG Hello world! KTHXBAI"
assert_status 200
end
class ImplicitNameController < ::ApplicationController
self.view_paths = [ActionView::Template::FixturePath.new(
"layouts/controller_layouts/implicit_name.html.erb" => "OMGIMPLICIT <%= yield %> KTHXBAI",
"basic.html.erb" => "Hello world!"
)]
def index
render :template => "basic"
end
end
class TestImplicitNamedLayout < SimpleRouteCase
describe "rendering a normal template, but using an implicit NAMED layout"
get "/controller_layouts/implicit_name/index"
assert_body "OMGIMPLICIT Hello world! KTHXBAI"
assert_status 200
class RenderLayoutTest < SimpleRouteCase
test "rendering a normal template, but using the implicit layout" do
get "/controller_layouts/implicit/index"
assert_body "OMG Hello world! KTHXBAI"
assert_status 200
end
test "rendering a normal template, but using an implicit NAMED layout" do
get "/controller_layouts/implicit_name/index"
assert_body "OMGIMPLICIT Hello world! KTHXBAI"
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
end
class TestOverridingImplicitLayout < SimpleRouteCase
describe "overriding an implicit layout with render :layout option"
get "/controller_layouts/implicit/override"
assert_body "Override! Hello world!"
end
class TestLayoutOptions < SimpleRouteCase
class LayoutOptionsTest < SimpleRouteCase
testing ControllerLayouts::ImplicitController
test "rendering with :layout => false leaves out the implicit layout" do
get :layout_false
assert_response "hai(layout_false.html.erb)"

View File

@@ -79,7 +79,6 @@ module RenderTemplate
end
class WithLayoutController < ::ApplicationController
self.view_paths = [ActionView::Template::FixturePath.new(
"test/basic.html.erb" => "Hello from basic.html.erb",
"shared.html.erb" => "Elastica",
@@ -108,46 +107,45 @@ module RenderTemplate
end
end
class TestTemplateRenderWithLayout < SimpleRouteCase
describe "rendering a normal template with full path with layout"
get "/render_template/with_layout"
assert_body "Hello from basic.html.erb, I'm here!"
assert_status 200
class TestWithLayout < SimpleRouteCase
describe "Rendering with :template using implicit or explicit layout"
test "rendering with implicit layout" do
get "/render_template/with_layout"
assert_body "Hello from basic.html.erb, I'm here!"
assert_status 200
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
end
class TestTemplateRenderWithLayoutTrue < SimpleRouteCase
describe "rendering a normal template with full path with layout => :true"
get "/render_template/with_layout/with_layout"
assert_body "Hello from basic.html.erb, I'm here!"
assert_status 200
end
class TestTemplateRenderWithLayoutFalse < SimpleRouteCase
describe "rendering a normal template with full path with layout => :false"
get "/render_template/with_layout/with_layout_false"
assert_body "Hello from basic.html.erb"
assert_status 200
end
class TestTemplateRenderWithLayoutNil < SimpleRouteCase
describe "rendering a normal template with full path with layout => :nil"
get "/render_template/with_layout/with_layout_nil"
assert_body "Hello from basic.html.erb"
assert_status 200
end
class TestTemplateRenderWithCustomLayout < SimpleRouteCase
describe "rendering a normal template with full path with layout => 'greetings'"
get "/render_template/with_layout/with_custom_layout"
assert_body "Hello from basic.html.erb, I wish thee well."
assert_status 200
end
module Compatibility
class WithoutLayoutController < ActionController::Base
self.view_paths = [ActionView::Template::FixturePath.new(
@@ -161,11 +159,12 @@ module RenderTemplate
end
class TestTemplateRenderWithForwardSlash < SimpleRouteCase
describe "rendering a normal template with full path starting with a leading slash"
test "rendering a normal template with full path starting with a leading slash" do
get "/render_template/compatibility/without_layout/with_forward_slash"
get "/render_template/compatibility/without_layout/with_forward_slash"
assert_body "Hello from basic.html.erb"
assert_status 200
assert_body "Hello from basic.html.erb"
assert_status 200
end
end
end
end

View File

@@ -8,60 +8,57 @@ module Render
"render/blank_render/access_action_name.html.erb" => "Action Name: <%= action_name %>",
"render/blank_render/access_controller_name.html.erb" => "Controller Name: <%= controller_name %>"
)]
def index
render
end
def access_request
render :action => "access_request"
end
def render_action_name
render :action => "access_action_name"
end
private
private
def secretz
render :text => "FAIL WHALE!"
end
end
class TestBlankRender < SimpleRouteCase
describe "Render with blank"
get "/render/blank_render"
assert_body "Hello world!"
assert_status 200
end
class DoubleRenderController < ActionController::Base
def index
render :text => "hello"
render :text => "world"
end
end
class TestBasic < SimpleRouteCase
describe "Rendering more than once"
test "raises an exception" do
class RenderTest < SimpleRouteCase
test "render with blank" do
get "/render/blank_render"
assert_body "Hello world!"
assert_status 200
end
test "rendering more than once raises an exception" do
assert_raises(AbstractController::DoubleRenderError) do
get "/render/double_render", {}, "action_dispatch.show_exceptions" => false
end
end
end
class TestOnlyRenderPublicActions < SimpleRouteCase
describe "Only public methods on actual controllers are callable actions"
test "raises an exception when a method of Object is called" do
assert_raises(AbstractController::ActionNotFound) do
get "/render/blank_render/clone", {}, "action_dispatch.show_exceptions" => false
end
end
test "raises an exception when a private method is called" do
assert_raises(AbstractController::ActionNotFound) do
get "/render/blank_render/secretz", {}, "action_dispatch.show_exceptions" => false
@@ -74,12 +71,12 @@ module Render
get "/render/blank_render/access_request"
assert_body "The request: GET"
end
test "The action_name is accessible in the view" do
get "/render/blank_render/render_action_name"
assert_body "Action Name: render_action_name"
end
test "The controller_name is accessible in the view" do
get "/render/blank_render/access_controller_name"
assert_body "Controller Name: blank_render"

View File

@@ -11,15 +11,7 @@ module RenderText
render :text => "hello david"
end
end
class TestSimpleTextRenderWithNoLayout < SimpleRouteCase
describe "Rendering text from a action with default options renders the text with the layout"
get "/render_text/simple"
assert_body "hello david"
assert_status 200
end
class WithLayoutController < ::ApplicationController
self.view_paths = [ActionView::Template::FixturePath.new(
"layouts/application.html.erb" => "<%= yield %>, I'm here!",
@@ -73,76 +65,77 @@ module RenderText
end
end
class TestSimpleTextRenderWithLayout < SimpleRouteCase
describe "Rendering text from a action with default options renders the text without the layout"
get "/render_text/with_layout"
assert_body "hello david"
assert_status 200
end
class TestTextRenderWithStatus < SimpleRouteCase
describe "Rendering text, while also providing a custom status code"
get "/render_text/with_layout/custom_code"
assert_body "hello world"
assert_status 404
end
class TestTextRenderWithNil < SimpleRouteCase
describe "Rendering text with nil returns a single space character"
get "/render_text/with_layout/with_nil"
assert_body " "
assert_status 200
end
class TestTextRenderWithNilAndStatus < SimpleRouteCase
describe "Rendering text with nil and custom status code returns a single space character with the status"
get "/render_text/with_layout/with_nil_and_status"
assert_body " "
assert_status 403
end
class TestTextRenderWithFalse < SimpleRouteCase
describe "Rendering text with false returns the string 'false'"
get "/render_text/with_layout/with_false"
assert_body "false"
assert_status 200
end
class TestTextRenderWithLayoutTrue < SimpleRouteCase
describe "Rendering text with :layout => true"
get "/render_text/with_layout/with_layout_true"
assert_body "hello world, I'm here!"
assert_status 200
end
class TestTextRenderWithCustomLayout < SimpleRouteCase
describe "Rendering text with :layout => 'greetings'"
get "/render_text/with_layout/with_custom_layout"
assert_body "hello world, I wish thee well."
assert_status 200
end
class TestTextRenderWithLayoutFalse < SimpleRouteCase
describe "Rendering text with :layout => false"
get "/render_text/with_layout/with_layout_false"
assert_body "hello world"
assert_status 200
end
class TestTextRenderWithLayoutNil < SimpleRouteCase
describe "Rendering text with :layout => nil"
get "/render_text/with_layout/with_layout_nil"
assert_body "hello world"
assert_status 200
class RenderTextTest < SimpleRouteCase
describe "Rendering text using render :text"
test "rendering text from a action with default options renders the text with the layout" do
get "/render_text/simple"
assert_body "hello david"
assert_status 200
end
test "rendering text from a action with default options renders the text without the layout" do
get "/render_text/with_layout"
assert_body "hello david"
assert_status 200
end
test "rendering text, while also providing a custom status code" do
get "/render_text/with_layout/custom_code"
assert_body "hello world"
assert_status 404
end
test "rendering text with nil returns a single space character" do
get "/render_text/with_layout/with_nil"
assert_body " "
assert_status 200
end
test "Rendering text with nil and custom status code returns a single space character with the status" do
get "/render_text/with_layout/with_nil_and_status"
assert_body " "
assert_status 403
end
test "rendering text with false returns the string 'false'" do
get "/render_text/with_layout/with_false"
assert_body "false"
assert_status 200
end
test "rendering text with :layout => true" do
get "/render_text/with_layout/with_layout_true"
assert_body "hello world, I'm here!"
assert_status 200
end
test "rendering text with :layout => 'greetings'" do
get "/render_text/with_layout/with_custom_layout"
assert_body "hello world, I wish thee well."
assert_status 200
end
test "rendering text with :layout => false" do
get "/render_text/with_layout/with_layout_false"
assert_body "hello world"
assert_status 200
end
test "rendering text with :layout => nil" do
get "/render_text/with_layout/with_layout_nil"
assert_body "hello world"
assert_status 200
end
end
end

View File

@@ -36,13 +36,13 @@ class Rack::TestCase < ActionController::IntegrationTest
setup do
ActionController::Base.session_options[:key] = "abc"
ActionController::Base.session_options[:secret] = ("*" * 30)
controllers = ActionController::Base.subclasses.map do |k|
k.underscore.sub(/_controller$/, '')
end
ActionController::Routing.use_controllers!(controllers)
# Move into a bootloader
ActionController::Base.subclasses.each do |klass|
klass = klass.constantize
@@ -50,13 +50,13 @@ class Rack::TestCase < ActionController::IntegrationTest
klass.class_eval do
_write_layout_method
end
end
end
end
def app
@app ||= ActionController::Dispatcher.new
end
def self.testing(klass = nil)
if klass
@testing = "/#{klass.name.underscore}".sub!(/_controller$/, '')
@@ -64,13 +64,7 @@ class Rack::TestCase < ActionController::IntegrationTest
@testing
end
end
def self.get(url)
setup do |test|
test.get url
end
end
def get(thing, *args)
if thing.is_a?(Symbol)
super("#{self.class.testing}/#{thing}")
@@ -78,27 +72,15 @@ class Rack::TestCase < ActionController::IntegrationTest
super
end
end
def assert_body(body)
assert_equal body, Array.wrap(response.body).join
end
def self.assert_body(body)
test "body is set to '#{body}'" do
assert_body body
end
end
def assert_status(code)
assert_equal code, response.status
end
def self.assert_status(code)
test "status code is set to #{code}" do
assert_status code
end
end
def assert_response(body, status = 200, headers = {})
assert_body body
assert_status status
@@ -106,27 +88,14 @@ class Rack::TestCase < ActionController::IntegrationTest
assert_header header, value
end
end
def assert_content_type(type)
assert_equal type, response.headers["Content-Type"]
end
def self.assert_content_type(type)
test "content type is set to #{type}" do
assert_content_type(type)
end
end
def assert_header(name, value)
assert_equal value, response.headers[name]
end
def self.assert_header(name, value)
test "'#{name}' header is set to #{value.inspect}" do
assert_header(name, value)
end
end
end
class ::ApplicationController < ActionController::Base