Chris@909: # Tests in this file ensure that: Chris@909: # Chris@909: # * plugin views are found Chris@909: # * views in the application take precedence over those in plugins Chris@909: # * views in subsequently loaded plugins take precendence over those in previously loaded plugins Chris@909: # * this works for namespaced views accordingly Chris@909: Chris@909: require File.dirname(__FILE__) + '/../test_helper' Chris@909: Chris@909: class ViewLoadingTest < ActionController::TestCase Chris@909: def setup Chris@909: @request = ActionController::TestRequest.new Chris@909: @response = ActionController::TestResponse.new Chris@909: end Chris@909: Chris@909: # plugin views should be found Chris@909: Chris@909: def test_WITH_a_view_defined_only_in_a_plugin_IT_should_find_the_view Chris@909: get_action_on_controller :a_view, :alpha_plugin Chris@909: assert_response_body 'alpha_plugin/a_view' Chris@909: end Chris@909: Chris@909: def test_WITH_a_namespaced_view_defined_only_in_a_plugin_IT_should_find_the_view Chris@909: get_action_on_controller :a_view, :alpha_plugin, :namespace Chris@909: assert_response_body 'namespace/alpha_plugin/a_view' Chris@909: end Chris@909: Chris@909: # app takes precedence over plugins Chris@909: Chris@909: def test_WITH_a_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app Chris@909: get_action_on_controller :a_view, :app_and_plugin Chris@909: assert_response_body 'app_and_plugin/a_view (from app)' Chris@909: end Chris@909: Chris@909: def test_WITH_a_namespaced_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app Chris@909: get_action_on_controller :a_view, :app_and_plugin, :namespace Chris@909: assert_response_body 'namespace/app_and_plugin/a_view (from app)' Chris@909: end Chris@909: Chris@909: # subsequently loaded plugins take precendence over previously loaded plugins Chris@909: Chris@909: def test_WITH_a_view_defined_in_two_plugins_IT_should_find_the_latter_of_both Chris@909: get_action_on_controller :a_view, :shared_plugin Chris@909: assert_response_body 'shared_plugin/a_view (from beta_plugin)' Chris@909: end Chris@909: Chris@909: def test_WITH_a_namespaced_view_defined_in_two_plugins_IT_should_find_the_latter_of_both Chris@909: get_action_on_controller :a_view, :shared_plugin, :namespace Chris@909: assert_response_body 'namespace/shared_plugin/a_view (from beta_plugin)' Chris@909: end Chris@909: Chris@909: # layouts loaded from plugins Chris@909: Chris@909: def test_should_be_able_to_load_a_layout_from_a_plugin Chris@909: get_action_on_controller :action_with_layout, :alpha_plugin Chris@909: assert_response_body 'rendered in AlphaPluginController#action_with_layout (with plugin layout)' Chris@909: end Chris@909: Chris@909: end Chris@909: