1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Modified the action layout tests to use the new FixtureTemplate class

This commit is contained in:
Carl Lerche 2009-03-20 14:43:19 -07:00 committed by Yehuda Katz
parent dc96ba8043
commit 90c079a781
10 changed files with 89 additions and 26 deletions

View file

@ -18,30 +18,28 @@ module ActionView #:nodoc:
end end
end end
def initialize(body, template_path, load_paths = []) def initialize(body, *args)
@body = body @body = body
end super(*args)
def relative_path
"fail"
end
def filename
"fail"
end
def method_name_without_locals
"abc"
end end
def source def source
@body @body
end end
private
def find_full_path(path, load_paths)
return '/', path
end
end end
end end
OMG = { OMG = {
"happy_path/render_action/hello_world.html.erb" => "Hello world!" "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 module HappyPath
@ -55,9 +53,21 @@ module HappyPath
render :action => "hello_world" render :action => "hello_world"
end end
def render_action_goodbye_world
render :action => "goodbye_world"
end
end end
class TestRenderAction < SimpleRouteCase class SexyTimeController < ActionController::Base2
self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(OMG)]
def borat
render "borat"
end
end
class TestRenderHelloAction < SimpleRouteCase
describe "Rendering an action using :action => <String>" describe "Rendering an action using :action => <String>"
@ -66,4 +76,19 @@ module HappyPath
assert_status 200 assert_status 200
end end
class TestRenderGoodbyeAction < SimpleRouteCase
describe "Goodbye"
get "/happy_path/render_action/render_action_goodbye_world"
assert_body "Goodbye world!"
assert_status 200
end
class TestRenderBorat < SimpleRouteCase
describe "Borat yo"
get "/happy_path/sexy_time/borat"
assert_body "I LIKE!!!"
assert_status 200
end
end end

View file

@ -77,7 +77,10 @@ module HappyPath
class RenderActionWithLayoutController < ActionController::Base2 class RenderActionWithLayoutController < ActionController::Base2
# Set the view path to an application view structure with layouts # Set the view path to an application view structure with layouts
self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_application_layout')] self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
"happy_path/render_action_with_layout/hello_world.html.erb" => "Hello World!",
"layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI"
})]
def hello_world def hello_world
render :action => "hello_world" render :action => "hello_world"
@ -85,7 +88,10 @@ module HappyPath
end end
class RenderActionWithControllerLayoutController < ActionController::Base2 class RenderActionWithControllerLayoutController < ActionController::Base2
self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_controller_layout')] self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
"happy_path/render_action_with_controller_layout/hello_world.html.erb" => "Hello World!",
"layouts/happy_path/render_action_with_controller_layout.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
})]
def hello_world def hello_world
render :action => "hello_world" render :action => "hello_world"
@ -93,7 +99,11 @@ module HappyPath
end end
class RenderActionWithControllerLayoutFirstController < ActionController::Base2 class RenderActionWithControllerLayoutFirstController < ActionController::Base2
self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_both_layouts')] self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
"happy_path/render_action_with_controller_layout_first/hello_world.html.erb" => "Hello World!",
"layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI",
"layouts/happy_path/render_action_with_controller_layout_first.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI"
})]
def hello_world def hello_world
render :action => "hello_world" render :action => "hello_world"
@ -127,5 +137,4 @@ module HappyPath
assert_status 200 assert_status 200
end end
# TODO: Implement a FixtureViewPath
end end

View file

@ -50,6 +50,42 @@ module ActionController
end end
end end
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
# Temporary base class # Temporary base class
class Rack::TestCase < ActiveSupport::TestCase class Rack::TestCase < ActiveSupport::TestCase
include Rack::Test::Methods include Rack::Test::Methods

View file

@ -1 +0,0 @@
OHAI <%= yield %> KTHXBAI