Chris@0
|
1 # Tests in this file ensure that:
|
Chris@0
|
2 #
|
Chris@0
|
3 # * plugin controller actions are found
|
Chris@0
|
4 # * actions defined in application controllers take precedence over those in plugins
|
Chris@0
|
5 # * actions in controllers in subsequently loaded plugins take precendence over those in previously loaded plugins
|
Chris@0
|
6 # * this works for actions in namespaced controllers accordingly
|
Chris@0
|
7
|
Chris@0
|
8 require File.dirname(__FILE__) + '/../test_helper'
|
Chris@0
|
9
|
Chris@0
|
10 class ControllerLoadingTest < ActionController::TestCase
|
Chris@0
|
11 def setup
|
Chris@0
|
12 @request = ActionController::TestRequest.new
|
Chris@0
|
13 @response = ActionController::TestResponse.new
|
Chris@0
|
14 end
|
Chris@0
|
15
|
Chris@0
|
16 # plugin controller actions should be found
|
Chris@0
|
17
|
Chris@0
|
18 def test_WITH_an_action_defined_only_in_a_plugin_IT_should_use_this_action
|
Chris@0
|
19 get_action_on_controller :an_action, :alpha_plugin
|
Chris@0
|
20 assert_response_body 'rendered in AlphaPluginController#an_action'
|
Chris@0
|
21 end
|
Chris@0
|
22
|
Chris@0
|
23 def test_WITH_an_action_defined_only_in_a_namespaced_plugin_controller_IT_should_use_this_action
|
Chris@0
|
24 get_action_on_controller :an_action, :alpha_plugin, :namespace
|
Chris@0
|
25 assert_response_body 'rendered in Namespace::AlphaPluginController#an_action'
|
Chris@0
|
26 end
|
Chris@0
|
27
|
Chris@0
|
28 # app takes precedence over plugins
|
Chris@0
|
29
|
Chris@0
|
30 def test_WITH_an_action_defined_in_both_app_and_plugin_IT_should_use_the_one_in_app
|
Chris@0
|
31 get_action_on_controller :an_action, :app_and_plugin
|
Chris@0
|
32 assert_response_body 'rendered in AppAndPluginController#an_action (from app)'
|
Chris@0
|
33 end
|
Chris@0
|
34
|
Chris@0
|
35 def test_WITH_an_action_defined_in_namespaced_controllers_in_both_app_and_plugin_IT_should_use_the_one_in_app
|
Chris@0
|
36 get_action_on_controller :an_action, :app_and_plugin, :namespace
|
Chris@0
|
37 assert_response_body 'rendered in Namespace::AppAndPluginController#an_action (from app)'
|
Chris@0
|
38 end
|
Chris@0
|
39
|
Chris@0
|
40 # subsequently loaded plugins take precendence over previously loaded plugins
|
Chris@0
|
41
|
Chris@0
|
42 def test_WITH_an_action_defined_in_two_plugin_controllers_IT_should_use_the_latter_of_both
|
Chris@0
|
43 get_action_on_controller :an_action, :shared_plugin
|
Chris@0
|
44 assert_response_body 'rendered in SharedPluginController#an_action (from beta_plugin)'
|
Chris@0
|
45 end
|
Chris@0
|
46
|
Chris@0
|
47 def test_WITH_an_action_defined_in_two_namespaced_plugin_controllers_IT_should_use_the_latter_of_both
|
Chris@0
|
48 get_action_on_controller :an_action, :shared_plugin, :namespace
|
Chris@0
|
49 assert_response_body 'rendered in Namespace::SharedPluginController#an_action (from beta_plugin)'
|
Chris@0
|
50 end
|
Chris@0
|
51 end
|