Skip to content

Commit

Permalink
Consolidate CustomHandlerTest, TemplateFileTest, and TemplateObjectTe…
Browse files Browse the repository at this point in the history
…st and test them at a higher level of abstraction in ViewRenderTest.
  • Loading branch information
josh committed Jun 25, 2008
1 parent 670e22e commit 6f53270
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 254 deletions.
10 changes: 3 additions & 7 deletions actionpack/lib/action_view/view_load_paths.rb
Expand Up @@ -6,19 +6,15 @@ def self.type_cast(obj)


class LoadPath #:nodoc: class LoadPath #:nodoc:
attr_reader :path, :paths attr_reader :path, :paths
delegate :to_s, :inspect, :to => :path delegate :to_s, :to_str, :inspect, :to => :path


def initialize(path) def initialize(path)
@path = path.freeze @path = path.freeze
reload! reload!
end end


def eql?(view_path) def ==(path)
view_path.is_a?(ViewPath) && @path == view_path.path to_str == path.to_str
end

def hash
@path.hash
end end


# Rebuild load path directory cache # Rebuild load path directory cache
Expand Down
45 changes: 0 additions & 45 deletions actionpack/test/controller/custom_handler_test.rb

This file was deleted.

30 changes: 15 additions & 15 deletions actionpack/test/controller/view_paths_test.rb
Expand Up @@ -47,46 +47,46 @@ def teardown
end end


def test_template_load_path_was_set_correctly def test_template_load_path_was_set_correctly
assert_equal [ LOAD_PATH_ROOT ], @controller.view_paths.map(&:to_s) assert_equal [ LOAD_PATH_ROOT ], @controller.view_paths
end end


def test_controller_appends_view_path_correctly def test_controller_appends_view_path_correctly
@controller.append_view_path 'foo' @controller.append_view_path 'foo'
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths


@controller.append_view_path(%w(bar baz)) @controller.append_view_path(%w(bar baz))
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths


@controller.append_view_path(LOAD_PATH_ROOT) @controller.append_view_path(LOAD_PATH_ROOT)
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths


@controller.append_view_path([LOAD_PATH_ROOT]) @controller.append_view_path([LOAD_PATH_ROOT])
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
end end


def test_controller_prepends_view_path_correctly def test_controller_prepends_view_path_correctly
@controller.prepend_view_path 'baz' @controller.prepend_view_path 'baz'
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths


@controller.prepend_view_path(%w(foo bar)) @controller.prepend_view_path(%w(foo bar))
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths


@controller.prepend_view_path(LOAD_PATH_ROOT) @controller.prepend_view_path(LOAD_PATH_ROOT)
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths


@controller.prepend_view_path([LOAD_PATH_ROOT]) @controller.prepend_view_path([LOAD_PATH_ROOT])
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
end end


def test_template_appends_view_path_correctly def test_template_appends_view_path_correctly
@controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller) @controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
class_view_paths = TestController.view_paths class_view_paths = TestController.view_paths


@controller.append_view_path 'foo' @controller.append_view_path 'foo'
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths


@controller.append_view_path(%w(bar baz)) @controller.append_view_path(%w(bar baz))
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s) assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
assert_equal class_view_paths, TestController.view_paths assert_equal class_view_paths, TestController.view_paths
end end


Expand All @@ -95,10 +95,10 @@ def test_template_prepends_view_path_correctly
class_view_paths = TestController.view_paths class_view_paths = TestController.view_paths


@controller.prepend_view_path 'baz' @controller.prepend_view_path 'baz'
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths


@controller.prepend_view_path(%w(foo bar)) @controller.prepend_view_path(%w(foo bar))
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths.map(&:to_s) assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
assert_equal class_view_paths, TestController.view_paths assert_equal class_view_paths, TestController.view_paths
end end


Expand Down Expand Up @@ -140,13 +140,13 @@ class C < ActionController::Base; end


A.view_paths = ['a/path'] A.view_paths = ['a/path']


assert_equal ['a/path'], A.view_paths.map(&:to_s) assert_equal ['a/path'], A.view_paths
assert_equal A.view_paths, B.view_paths assert_equal A.view_paths, B.view_paths
assert_equal original_load_paths, C.view_paths assert_equal original_load_paths, C.view_paths


C.view_paths = [] C.view_paths = []
assert_nothing_raised { C.view_paths << 'c/path' } assert_nothing_raised { C.view_paths << 'c/path' }
assert_equal ['c/path'], C.view_paths.map(&:to_s) assert_equal ['c/path'], C.view_paths
end end


def test_find_template_file_for_path def test_find_template_file_for_path
Expand Down
124 changes: 124 additions & 0 deletions actionpack/test/template/render_test.rb
@@ -0,0 +1,124 @@
require 'abstract_unit'
require 'controller/fake_models'

class ViewRenderTest < Test::Unit::TestCase
FIXTURE_LOAD_PATHS = ActionView::ViewLoadPaths.new([File.join(File.dirname(__FILE__), '..', 'fixtures')])

def setup
@assigns = { :secret => 'in the sauce' }
@view = ActionView::Base.new(FIXTURE_LOAD_PATHS, @assigns)
end

def test_render_file
assert_equal "Hello world!", @view.render("test/hello_world.erb")
end

def test_render_file_not_using_full_path
assert_equal "Hello world!", @view.render(:file => "test/hello_world.erb", :use_full_path => true)
end

def test_render_file_without_specific_extension
assert_equal "Hello world!", @view.render("test/hello_world")
end

def test_render_file_with_full_path
template_path = File.join(File.dirname(__FILE__), '../fixtures/test/hello_world.erb')
assert_equal "Hello world!", @view.render(:file => template_path, :use_full_path => false)
end

def test_render_file_with_instance_variables
assert_equal "The secret is in the sauce\n", @view.render("test/render_file_with_ivar.erb")
end

def test_render_file_with_locals
locals = { :secret => 'in the sauce' }
assert_equal "The secret is in the sauce\n", @view.render("test/render_file_with_locals.erb", locals)
end

def test_render_file_not_using_full_path_with_dot_in_path
assert_equal "The secret is in the sauce\n", @view.render("test/dot.directory/render_file_with_ivar")
end

def test_render_update
# TODO: You should not have to stub out template because template is self!
@view.instance_variable_set(:@template, @view)
assert_equal 'alert("Hello, World!");', @view.render(:update) { |page| page.alert('Hello, World!') }
end

def test_render_partial
assert_equal "only partial", @view.render(:partial => "test/partial_only")
end

def test_render_partial_with_errors
assert_raise(ActionView::TemplateError) { @view.render(:partial => "test/raise") }
end

def test_render_partial_collection
assert_equal "Hello: davidHello: mary", @view.render(:partial => "test/customer", :collection => [ Customer.new("david"), Customer.new("mary") ])
end

# TODO: The reason for this test is unclear, improve documentation
def test_render_partial_and_fallback_to_layout
assert_equal "Before (Josh)\n\nAfter", @view.render(:partial => "test/layout_for_partial", :locals => { :name => "Josh" })
end

# TODO: The reason for this test is unclear, improve documentation
def test_render_js_partial_and_fallback_to_erb_layout
@view.template_format = :js
assert_equal "Before (Josh)\n\nAfter", @view.render(:partial => "test/layout_for_partial", :locals => { :name => "Josh" })
end

# TODO: The reason for this test is unclear, improve documentation
def test_render_missing_xml_partial_and_raise_missing_template
@view.template_format = :xml
assert_raise(ActionView::MissingTemplate) { @view.render(:partial => "test/layout_for_partial") }
end

def test_render_inline
assert_equal "Hello, World!", @view.render(:inline => "Hello, World!")
end

def test_render_inline_with_locals
assert_equal "Hello, Josh!", @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" })
end

def test_render_fallbacks_to_erb_for_unknown_types
assert_equal "Hello, World!", @view.render(:inline => "Hello, World!", :type => :foo)
end

class CustomHandler < ActionView::TemplateHandler
def render(template)
[template.source, template.locals].inspect
end
end

def test_render_inline_with_custom_type
ActionView::Template.register_template_handler :foo, CustomHandler
assert_equal '["Hello, World!", {}]', @view.render(:inline => "Hello, World!", :type => :foo)
end

def test_render_inline_with_locals_and_custom_type
ActionView::Template.register_template_handler :foo, CustomHandler
assert_equal '["Hello, <%= name %>!", {:name=>"Josh"}]', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo)
end

class CompilableCustomHandler < ActionView::TemplateHandler
include ActionView::TemplateHandlers::Compilable

def compile(template)
"@output_buffer = ''\n" +
"@output_buffer << 'locals: #{template.locals.inspect}, '\n" +
"@output_buffer << 'source: #{template.source.inspect}'\n"
end
end

def test_render_inline_with_compilable_custom_type
ActionView::Template.register_template_handler :foo, CompilableCustomHandler
assert_equal 'locals: {}, source: "Hello, World!"', @view.render(:inline => "Hello, World!", :type => :foo)
end

def test_render_inline_with_locals_and_compilable_custom_type
ActionView::Template.register_template_handler :foo, CompilableCustomHandler
assert_equal 'locals: {:name=>"Josh"}, source: "Hello, <%= name %>!"', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo)
end
end
95 changes: 0 additions & 95 deletions actionpack/test/template/template_file_test.rb

This file was deleted.

0 comments on commit 6f53270

Please sign in to comment.