mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Finished implementing :layout for most of the render options
This commit is contained in:
@@ -1,53 +1,15 @@
|
||||
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
|
||||
|
||||
module ActionView #:nodoc:
|
||||
class FixtureTemplate < Template
|
||||
class FixturePath < Template::Path
|
||||
def initialize(hash)
|
||||
@hash = {}
|
||||
|
||||
hash.each do |k, v|
|
||||
@hash[k.sub(/\.\w+$/, '')] = FixtureTemplate.new(v, k.split("/").last, self)
|
||||
end
|
||||
|
||||
super("")
|
||||
end
|
||||
|
||||
def find_template(path)
|
||||
@hash[path]
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(body, *args)
|
||||
@body = body
|
||||
super(*args)
|
||||
end
|
||||
|
||||
def source
|
||||
@body
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_full_path(path, load_paths)
|
||||
return '/', path
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
OMG = {
|
||||
"happy_path/render_action/hello_world.html.erb" => "Hello world!",
|
||||
"happy_path/render_action/goodbye_world.html.erb" => "Goodbye world!",
|
||||
"happy_path/sexy_time/borat.html.erb" => "I LIKE!!!"
|
||||
}
|
||||
|
||||
module HappyPath
|
||||
|
||||
# This has no layout and it works
|
||||
class RenderActionController < ActionController::Base2
|
||||
class RenderActionLolController < ActionController::Base2
|
||||
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(OMG)]
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
|
||||
"happy_path/render_action_lol/hello_world.html.erb" => "Hello world!",
|
||||
"happy_path/render_action_lol/goodbye_world.html.erb" => "Goodbye world!",
|
||||
"happy_path/sexy_time/borat.html.erb" => "I LIKE!!!"
|
||||
})]
|
||||
|
||||
def render_action_hello_world
|
||||
render :action => "hello_world"
|
||||
@@ -60,7 +22,11 @@ module HappyPath
|
||||
end
|
||||
|
||||
class SexyTimeController < ActionController::Base2
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(OMG)]
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
|
||||
"happy_path/render_action_lol/hello_world.html.erb" => "Hello world!",
|
||||
"happy_path/render_action_lol/goodbye_world.html.erb" => "Goodbye world!",
|
||||
"happy_path/sexy_time/borat.html.erb" => "I LIKE!!!"
|
||||
})]
|
||||
|
||||
def borat
|
||||
render "borat"
|
||||
@@ -68,19 +34,19 @@ module HappyPath
|
||||
end
|
||||
|
||||
class TestRenderHelloAction < SimpleRouteCase
|
||||
|
||||
|
||||
describe "Rendering an action using :action => <String>"
|
||||
|
||||
|
||||
get "/happy_path/render_action/render_action_hello_world"
|
||||
assert_body "Hello world!"
|
||||
assert_status 200
|
||||
|
||||
|
||||
end
|
||||
|
||||
class TestRenderGoodbyeAction < SimpleRouteCase
|
||||
describe "Goodbye"
|
||||
|
||||
get "/happy_path/render_action/render_action_goodbye_world"
|
||||
get "/happy_path/render_action_lol/render_action_goodbye_world"
|
||||
assert_body "Goodbye world!"
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
@@ -5,6 +5,10 @@ module HappyPath
|
||||
# This has no layout and it works
|
||||
class RenderActionController < ActionController::Base2
|
||||
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
|
||||
"happy_path/render_action/hello_world.html.erb" => "Hello world!"
|
||||
)]
|
||||
|
||||
def render_action_hello_world
|
||||
render :action => "hello_world"
|
||||
end
|
||||
@@ -28,33 +32,27 @@ module HappyPath
|
||||
end
|
||||
|
||||
class TestRenderAction < SimpleRouteCase
|
||||
|
||||
describe "Rendering an action using :action => <String>"
|
||||
|
||||
get "/happy_path/render_action/render_action_hello_world"
|
||||
assert_body "Hello world!"
|
||||
assert_status 200
|
||||
|
||||
end
|
||||
|
||||
class TestRenderActionWithString < SimpleRouteCase
|
||||
|
||||
describe "Render an action using 'hello_world'"
|
||||
|
||||
get "/happy_path/render_action/render_action_hello_world_as_string"
|
||||
assert_body "Hello world!"
|
||||
assert_status 200
|
||||
|
||||
end
|
||||
|
||||
class TestRenderActionWithStringAndOptions < SimpleRouteCase
|
||||
|
||||
describe "Render an action using 'hello_world'"
|
||||
|
||||
get "/happy_path/render_action/render_action_hello_world_as_string_with_options"
|
||||
assert_body "Hello world!"
|
||||
assert_status 404
|
||||
|
||||
end
|
||||
|
||||
class TestRenderActionAsSymbol < SimpleRouteCase
|
||||
|
||||
@@ -2,7 +2,12 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
|
||||
|
||||
module HappyPath
|
||||
|
||||
class RenderTemplateController < ActionController::Base2
|
||||
class RenderTemplateWithoutLayoutController < ActionController::Base2
|
||||
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
|
||||
"test/basic.html.erb" => "Hello from basic.html.erb",
|
||||
"shared.html.erb" => "Elastica"
|
||||
)]
|
||||
|
||||
def render_hello_world
|
||||
render :template => "test/basic"
|
||||
@@ -21,10 +26,10 @@ module HappyPath
|
||||
end
|
||||
end
|
||||
|
||||
class TestTemplateRender < SimpleRouteCase
|
||||
describe "rendering a normal template with full path"
|
||||
class TestTemplateRenderWithoutLayout < SimpleRouteCase
|
||||
describe "rendering a normal template with full path without layout"
|
||||
|
||||
get "/happy_path/render_template/render_hello_world"
|
||||
get "/happy_path/render_template_without_layout/render_hello_world"
|
||||
assert_body "Hello from basic.html.erb"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -32,7 +37,7 @@ module HappyPath
|
||||
class TestTemplateRenderWithForwardSlash < SimpleRouteCase
|
||||
describe "rendering a normal template with full path starting with a leading slash"
|
||||
|
||||
get "/happy_path/render_template/render_hello_world_with_forward_slash"
|
||||
get "/happy_path/render_template_without_layout/render_hello_world_with_forward_slash"
|
||||
assert_body "Hello from basic.html.erb"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -40,7 +45,7 @@ module HappyPath
|
||||
class TestTemplateRenderInTopDirectory < SimpleRouteCase
|
||||
describe "rendering a template not in a subdirectory"
|
||||
|
||||
get "/happy_path/render_template/render_template_in_top_directory"
|
||||
get "/happy_path/render_template_without_layout/render_template_in_top_directory"
|
||||
assert_body "Elastica"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -48,9 +53,81 @@ module HappyPath
|
||||
class TestTemplateRenderInTopDirectoryWithSlash < SimpleRouteCase
|
||||
describe "rendering a template not in a subdirectory with a leading slash"
|
||||
|
||||
get "/happy_path/render_template/render_template_in_top_directory_with_slash"
|
||||
get "/happy_path/render_template_without_layout/render_template_in_top_directory_with_slash"
|
||||
assert_body "Elastica"
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
class RenderTemplateWithLayoutController < ActionController::Base2
|
||||
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
|
||||
"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."
|
||||
)]
|
||||
|
||||
def render_hello_world
|
||||
render :template => "test/basic"
|
||||
end
|
||||
|
||||
def render_hello_world_with_layout
|
||||
render :template => "test/basic", :layout => true
|
||||
end
|
||||
|
||||
def render_hello_world_with_layout_false
|
||||
render :template => "test/basic", :layout => false
|
||||
end
|
||||
|
||||
def render_hello_world_with_layout_nil
|
||||
render :template => "test/basic", :layout => nil
|
||||
end
|
||||
|
||||
def render_hello_world_with_custom_layout
|
||||
render :template => "test/basic", :layout => "greetings"
|
||||
end
|
||||
end
|
||||
|
||||
class TestTemplateRenderWithLayout < SimpleRouteCase
|
||||
describe "rendering a normal template with full path with layout"
|
||||
|
||||
get "/happy_path/render_template_with_layout/render_hello_world"
|
||||
assert_body "Hello from basic.html.erb, I'm here!"
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
class TestTemplateRenderWithLayoutTrue < SimpleRouteCase
|
||||
describe "rendering a normal template with full path with layout => :true"
|
||||
|
||||
get "/happy_path/render_template_with_layout/render_hello_world_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 "/happy_path/render_template_with_layout/render_hello_world_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 "/happy_path/render_template_with_layout/render_hello_world_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 "/happy_path/render_template_with_layout/render_hello_world_with_custom_layout"
|
||||
assert_body "Hello from basic.html.erb, I wish thee well."
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
@@ -2,7 +2,15 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
|
||||
|
||||
module HappyPath
|
||||
|
||||
class RenderTextController < ActionController::Base2
|
||||
class RenderTextWithoutLayoutsController < ActionController::Base2
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new]
|
||||
|
||||
def render_hello_world
|
||||
render :text => "hello david"
|
||||
end
|
||||
end
|
||||
|
||||
class RenderTextWithLayoutsController < ActionController::Base2
|
||||
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
|
||||
"layouts/application.html.erb" => "<%= yield %>, I'm here!",
|
||||
"layouts/greetings.html.erb" => "<%= yield %>, I wish thee well."
|
||||
@@ -49,10 +57,18 @@ module HappyPath
|
||||
end
|
||||
end
|
||||
|
||||
class TestSimpleTextRender < SimpleRouteCase
|
||||
class TestSimpleTextRenderWithNoLayout < SimpleRouteCase
|
||||
describe "Rendering text from a action with default options renders the text with the layout"
|
||||
|
||||
get "/happy_path/render_text_without_layouts/render_hello_world"
|
||||
assert_body "hello david"
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
class TestSimpleTextRenderWithLayout < SimpleRouteCase
|
||||
describe "Rendering text from a action with default options renders the text without the layout"
|
||||
|
||||
get "/happy_path/render_text/render_hello_world"
|
||||
get "/happy_path/render_text_with_layouts/render_hello_world"
|
||||
assert_body "hello david"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -60,7 +76,7 @@ module HappyPath
|
||||
class TestTextRenderWithStatus < SimpleRouteCase
|
||||
describe "Rendering text, while also providing a custom status code"
|
||||
|
||||
get "/happy_path/render_text/render_custom_code"
|
||||
get "/happy_path/render_text_with_layouts/render_custom_code"
|
||||
assert_body "hello world"
|
||||
assert_status 404
|
||||
end
|
||||
@@ -68,7 +84,7 @@ module HappyPath
|
||||
class TestTextRenderWithNil < SimpleRouteCase
|
||||
describe "Rendering text with nil returns a single space character"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_nil"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_nil"
|
||||
assert_body " "
|
||||
assert_status 200
|
||||
end
|
||||
@@ -76,7 +92,7 @@ module HappyPath
|
||||
class TestTextRenderWithNilAndStatus < SimpleRouteCase
|
||||
describe "Rendering text with nil and custom status code returns a single space character with the status"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_nil_and_status"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_nil_and_status"
|
||||
assert_body " "
|
||||
assert_status 403
|
||||
end
|
||||
@@ -84,7 +100,7 @@ module HappyPath
|
||||
class TestTextRenderWithFalse < SimpleRouteCase
|
||||
describe "Rendering text with false returns the string 'false'"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_false"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_false"
|
||||
assert_body "false"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -92,7 +108,7 @@ module HappyPath
|
||||
class TestTextRenderWithLayoutTrue < SimpleRouteCase
|
||||
describe "Rendering text with :layout => true"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_layout"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_layout"
|
||||
assert_body "hello world, I'm here!"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -100,7 +116,7 @@ module HappyPath
|
||||
class TestTextRenderWithCustomLayout < SimpleRouteCase
|
||||
describe "Rendering text with :layout => 'greetings'"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_custom_layout"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_custom_layout"
|
||||
assert_body "hello world, I wish thee well."
|
||||
assert_status 200
|
||||
end
|
||||
@@ -108,7 +124,7 @@ module HappyPath
|
||||
class TestTextRenderWithLayoutFalse < SimpleRouteCase
|
||||
describe "Rendering text with :layout => false"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_layout_false"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_layout_false"
|
||||
assert_body "hello world"
|
||||
assert_status 200
|
||||
end
|
||||
@@ -116,7 +132,7 @@ module HappyPath
|
||||
class TestTextRenderWithLayoutNil < SimpleRouteCase
|
||||
describe "Rendering text with :layout => nil"
|
||||
|
||||
get "/happy_path/render_text/render_text_with_layout_nil"
|
||||
get "/happy_path/render_text_with_layouts/render_text_with_layout_nil"
|
||||
assert_body "hello world"
|
||||
assert_status 200
|
||||
end
|
||||
|
||||
@@ -44,7 +44,7 @@ module ActionController
|
||||
@subclasses
|
||||
end
|
||||
|
||||
append_view_path File.join(File.dirname(__FILE__), '..', 'fixtures')
|
||||
# append_view_path File.join(File.dirname(__FILE__), '..', 'fixtures')
|
||||
|
||||
CORE_METHODS = self.public_instance_methods
|
||||
end
|
||||
@@ -53,7 +53,7 @@ end
|
||||
module ActionView #:nodoc:
|
||||
class FixtureTemplate < Template
|
||||
class FixturePath < Template::Path
|
||||
def initialize(hash)
|
||||
def initialize(hash = {})
|
||||
@hash = {}
|
||||
|
||||
hash.each do |k, v|
|
||||
|
||||
Reference in New Issue
Block a user