From 84b0f9c739ffb82f3b8e0571c400014c34d0e369 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 19 Jan 2008 03:20:39 +0000 Subject: Introduce TemplateFinder to handle view paths and lookups. Closes #10800. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8669 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/controller/mime_responds_test.rb | 6 +--- actionpack/test/controller/new_render_test.rb | 10 ------ actionpack/test/controller/view_paths_test.rb | 6 ++-- actionpack/test/template/template_finder_test.rb | 43 ++++++++++++++++++++++++ 4 files changed, 46 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/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