From 61c90a4ad6eab3623002353ed5867e2f05cb6809 Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Mon, 21 Jan 2008 20:45:04 +0000 Subject: Reapply the TemplateFinder first applied in [8669] then reverted in [8676]. Closes #10800 [lifofifo] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8683 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/controller/mime_responds_test.rb | 6 +--- actionpack/test/controller/new_render_test.rb | 10 ------ actionpack/test/controller/render_test.rb | 9 +++++ actionpack/test/controller/view_paths_test.rb | 6 ++-- actionpack/test/template/template_finder_test.rb | 43 ++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 actionpack/test/template/template_finder_test.rb (limited to 'actionpack/test') diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb index ce89b9dbbb..febdbd0993 100644 --- a/actionpack/test/controller/mime_responds_test.rb +++ b/actionpack/test/controller/mime_responds_test.rb @@ -437,11 +437,7 @@ class MimeControllerTest < Test::Unit::TestCase end class AbstractPostController < ActionController::Base - class << self - def view_paths - [ File.dirname(__FILE__) + "/../fixtures/post_test/" ] - end - end + self.view_paths = File.dirname(__FILE__) + "/../fixtures/post_test/" end # For testing layouts which are set automatically diff --git a/actionpack/test/controller/new_render_test.rb b/actionpack/test/controller/new_render_test.rb index eb19b2e391..4a9b0e9ddf 100644 --- a/actionpack/test/controller/new_render_test.rb +++ b/actionpack/test/controller/new_render_test.rb @@ -78,11 +78,6 @@ class NewRenderTestController < ActionController::Base @secret = 'in the sauce' render :file => 'test/render_file_with_ivar', :use_full_path => true end - - def render_file_not_using_full_path_with_relative_path - @secret = 'in the sauce' - render :file => 'test/../test/render_file_with_ivar', :use_full_path => true - end def render_file_not_using_full_path_with_dot_in_path @secret = 'in the sauce' @@ -488,11 +483,6 @@ class NewRenderTest < Test::Unit::TestCase assert_equal "The secret is in the sauce\n", @response.body end - def test_render_file_not_using_full_path_with_relative_path - get :render_file_not_using_full_path_with_relative_path - assert_equal "The secret is in the sauce\n", @response.body - end - def test_render_file_not_using_full_path_with_dot_in_path get :render_file_not_using_full_path_with_dot_in_path assert_equal "The secret is in the sauce\n", @response.body diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index ddb77ee6b2..c258ae216b 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -20,6 +20,10 @@ class TestController < ActionController::Base render :template => "test/hello_world" end + def render_hello_world_with_forward_slash + render :template => "/test/hello_world" + end + def render_hello_world_from_variable @person = "david" render :text => "hello #{@person}" @@ -221,6 +225,11 @@ class RenderTest < Test::Unit::TestCase assert_template "test/hello_world" end + def test_render_with_forward_slash + get :render_hello_world_with_forward_slash + assert_template "test/hello_world" + end + def test_render_from_variable get :render_hello_world_from_variable assert_equal "hello david", @response.body diff --git a/actionpack/test/controller/view_paths_test.rb b/actionpack/test/controller/view_paths_test.rb index b1ca400779..0516da32d8 100644 --- a/actionpack/test/controller/view_paths_test.rb +++ b/actionpack/test/controller/view_paths_test.rb @@ -16,7 +16,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase def hello_world_at_request_time() render(:action => 'hello_world') end private def add_view_path - self.class.view_paths.unshift "#{LOAD_PATH_ROOT}/override" + prepend_view_path "#{LOAD_PATH_ROOT}/override" end end @@ -27,7 +27,6 @@ class ViewLoadPathsTest < Test::Unit::TestCase def setup TestController.view_paths = nil - ActionView::Base.cache_template_extensions = false @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @@ -45,7 +44,6 @@ class ViewLoadPathsTest < Test::Unit::TestCase def teardown ActiveSupport::Deprecation.behavior = @old_behavior - ActionView::Base.cache_template_extensions = true end def test_template_load_path_was_set_correctly @@ -99,7 +97,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase end def test_view_paths_override - TestController.view_paths.unshift "#{LOAD_PATH_ROOT}/override" + TestController.prepend_view_path "#{LOAD_PATH_ROOT}/override" get :hello_world assert_response :success assert_equal "Hello overridden world!", @response.body diff --git a/actionpack/test/template/template_finder_test.rb b/actionpack/test/template/template_finder_test.rb new file mode 100644 index 0000000000..c1da5be0f4 --- /dev/null +++ b/actionpack/test/template/template_finder_test.rb @@ -0,0 +1,43 @@ +require 'abstract_unit' + +class TemplateFinderTest < Test::Unit::TestCase + + LOAD_PATH_ROOT = File.join(File.dirname(__FILE__), '..', 'fixtures') + + def setup + ActionView::TemplateFinder.process_view_paths(LOAD_PATH_ROOT) + ActionView::Base::register_template_handler :mab, Class.new(ActionView::TemplateHandler) + @template = ActionView::Base.new + @finder = ActionView::TemplateFinder.new(@template, LOAD_PATH_ROOT) + end + + def test_should_raise_exception_for_unprocessed_view_path + assert_raises ActionView::TemplateFinder::InvalidViewPath do + ActionView::TemplateFinder.new(@template, File.dirname(__FILE__)) + end + end + + def test_should_cache_file_extension_properly + assert_equal ["builder", "erb", "rhtml", "rjs", "rxml", "mab"].sort, + ActionView::TemplateFinder.file_extension_cache[LOAD_PATH_ROOT].values.flatten.uniq.sort + + assert_equal Dir.glob("#{LOAD_PATH_ROOT}/**/*.{erb,rjs,rjs,builder,rxml,mab}").size, + ActionView::TemplateFinder.file_extension_cache[LOAD_PATH_ROOT].keys.size + end + + def test_should_cache_dir_content_properly + assert ActionView::TemplateFinder.processed_view_paths[LOAD_PATH_ROOT] + assert_equal Dir.glob("#{LOAD_PATH_ROOT}/**/*").find_all {|f| !File.directory?(f) }.size, + ActionView::TemplateFinder.processed_view_paths[LOAD_PATH_ROOT].size + end + + uses_mocha 'Template finder tests' do + + def test_should_update_extension_cache_when_template_handler_is_registered + ActionView::TemplateFinder.expects(:update_extension_cache_for).with("funky") + ActionView::Base::register_template_handler :funky, Class.new(ActionView::TemplateHandler) + end + + end + +end -- cgit v1.2.3