From 751b6be46481d7f149c909e63096b96c37b3d68f Mon Sep 17 00:00:00 2001 From: Marcel Molina Date: Thu, 12 Jan 2006 07:16:23 +0000 Subject: Allow auto-discovery of third party template library layouts. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3397 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/controller/layout_test.rb | 61 ++++++++++++++++++++++ .../test/fixtures/layout_tests/layouts/item.rhtml | 1 + .../layout_tests/layouts/layout_test.rhtml | 1 + .../layouts/third_party_template_library.mab | 1 + .../test/fixtures/layout_tests/views/hello.rhtml | 1 + 5 files changed, 65 insertions(+) create mode 100644 actionpack/test/controller/layout_test.rb create mode 100644 actionpack/test/fixtures/layout_tests/layouts/item.rhtml create mode 100644 actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml create mode 100644 actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab create mode 100644 actionpack/test/fixtures/layout_tests/views/hello.rhtml (limited to 'actionpack/test') diff --git a/actionpack/test/controller/layout_test.rb b/actionpack/test/controller/layout_test.rb new file mode 100644 index 0000000000..57eb1f73b1 --- /dev/null +++ b/actionpack/test/controller/layout_test.rb @@ -0,0 +1,61 @@ +require File.dirname(__FILE__) + '/../abstract_unit' + +# The template_root must be set on Base and not LayoutTest so that LayoutTest's inherited method has access to +# the template_root when looking for a layout +ActionController::Base.template_root = File.dirname(__FILE__) + '/../fixtures/layout_tests/' + +class LayoutTest < ActionController::Base + def self.controller_path; 'views' end +end + +# Restore template root to be unset +ActionController::Base.template_root = nil + +class ProductController < LayoutTest +end + +class ItemController < LayoutTest +end + +class ThirdPartyTemplateLibraryController < LayoutTest +end + +class MabView + def initialize(view) + end + + def render(text, locals = {}) + text + end +end + +ActionView::Base::register_template_handler :mab, MabView + +class LayoutAutoDiscoveryTest < Test::Unit::TestCase + def setup + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + + @request.host = "www.nextangle.com" + end + + def test_application_layout_is_default_when_no_controller_match + @controller = ProductController.new + get :hello + assert_equal 'layout_test.rhtml hello.rhtml', @response.body + end + + def test_controller_name_layout_name_match + @controller = ItemController.new + get :hello + assert_equal 'item.rhtml hello.rhtml', @response.body + end + + def test_third_party_template_library_auto_discovers_layout + @controller = ThirdPartyTemplateLibraryController.new + get :hello + assert_equal 'layouts/third_party_template_library', @controller.active_layout + assert_equal 'Mab', @response.body + end + +end \ No newline at end of file diff --git a/actionpack/test/fixtures/layout_tests/layouts/item.rhtml b/actionpack/test/fixtures/layout_tests/layouts/item.rhtml new file mode 100644 index 0000000000..1bc7cbda06 --- /dev/null +++ b/actionpack/test/fixtures/layout_tests/layouts/item.rhtml @@ -0,0 +1 @@ +item.rhtml <%= yield %> \ No newline at end of file diff --git a/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml b/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml new file mode 100644 index 0000000000..c0f2642b40 --- /dev/null +++ b/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml @@ -0,0 +1 @@ +layout_test.rhtml <%= yield %> \ No newline at end of file diff --git a/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab b/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab new file mode 100644 index 0000000000..018abfb0ac --- /dev/null +++ b/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab @@ -0,0 +1 @@ +Mab \ No newline at end of file diff --git a/actionpack/test/fixtures/layout_tests/views/hello.rhtml b/actionpack/test/fixtures/layout_tests/views/hello.rhtml new file mode 100644 index 0000000000..bbccf0913e --- /dev/null +++ b/actionpack/test/fixtures/layout_tests/views/hello.rhtml @@ -0,0 +1 @@ +hello.rhtml \ No newline at end of file -- cgit v1.2.3