~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/actionpack/test/controller/view_paths_test.rb

  • Committer: Richard Lee (Canonical)
  • Date: 2010-10-15 15:17:58 UTC
  • mfrom: (190.1.3 use-case-mapper)
  • Revision ID: richard.lee@canonical.com-20101015151758-wcvmfxrexsongf9d
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
require 'abstract_unit'
2
 
 
3
 
class ViewLoadPathsTest < ActionController::TestCase
4
 
  class TestController < ActionController::Base
5
 
    def self.controller_path() "test" end
6
 
    def rescue_action(e) raise end
7
 
 
8
 
    before_filter :add_view_path, :only => :hello_world_at_request_time
9
 
 
10
 
    def hello_world() end
11
 
    def hello_world_at_request_time() render(:action => 'hello_world') end
12
 
 
13
 
    private
14
 
      def add_view_path
15
 
        prepend_view_path "#{FIXTURE_LOAD_PATH}/override"
16
 
      end
17
 
  end
18
 
 
19
 
  class Test::SubController < ActionController::Base
20
 
    layout 'test/sub'
21
 
    def hello_world; render(:template => 'test/hello_world'); end
22
 
  end
23
 
 
24
 
  def setup
25
 
    TestController.view_paths = nil
26
 
 
27
 
    @request  = ActionController::TestRequest.new
28
 
    @response = ActionController::TestResponse.new
29
 
 
30
 
    @controller = TestController.new
31
 
    # Following is needed in order to setup @controller.template object properly
32
 
    @controller.send :initialize_template_class, @response
33
 
    @controller.send :assign_shortcuts, @request, @response
34
 
 
35
 
    # Track the last warning.
36
 
    @old_behavior = ActiveSupport::Deprecation.behavior
37
 
    @last_message = nil
38
 
    ActiveSupport::Deprecation.behavior = Proc.new { |message, callback| @last_message = message }
39
 
  end
40
 
 
41
 
  def teardown
42
 
    ActiveSupport::Deprecation.behavior = @old_behavior
43
 
  end
44
 
  
45
 
  def test_template_load_path_was_set_correctly
46
 
    assert_equal [FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
47
 
  end
48
 
 
49
 
  def test_controller_appends_view_path_correctly
50
 
    @controller.append_view_path 'foo'
51
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo'], @controller.view_paths.map(&:to_s)
52
 
 
53
 
    @controller.append_view_path(%w(bar baz))
54
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s)
55
 
 
56
 
    @controller.append_view_path(FIXTURE_LOAD_PATH)
57
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
58
 
  end
59
 
 
60
 
  def test_controller_prepends_view_path_correctly
61
 
    @controller.prepend_view_path 'baz'
62
 
    assert_equal ['baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
63
 
 
64
 
    @controller.prepend_view_path(%w(foo bar))
65
 
    assert_equal ['foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
66
 
 
67
 
    @controller.prepend_view_path(FIXTURE_LOAD_PATH)
68
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
69
 
  end
70
 
 
71
 
  def test_template_appends_view_path_correctly
72
 
    @controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
73
 
    class_view_paths = TestController.view_paths
74
 
 
75
 
    @controller.append_view_path 'foo'
76
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo'], @controller.view_paths.map(&:to_s)
77
 
 
78
 
    @controller.append_view_path(%w(bar baz))
79
 
    assert_equal [FIXTURE_LOAD_PATH, 'foo', 'bar', 'baz'], @controller.view_paths.map(&:to_s)
80
 
    assert_equal class_view_paths, TestController.view_paths
81
 
  end
82
 
 
83
 
  def test_template_prepends_view_path_correctly
84
 
    @controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
85
 
    class_view_paths = TestController.view_paths
86
 
 
87
 
    @controller.prepend_view_path 'baz'
88
 
    assert_equal ['baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
89
 
 
90
 
    @controller.prepend_view_path(%w(foo bar))
91
 
    assert_equal ['foo', 'bar', 'baz', FIXTURE_LOAD_PATH], @controller.view_paths.map(&:to_s)
92
 
    assert_equal class_view_paths, TestController.view_paths
93
 
  end
94
 
 
95
 
  def test_view_paths
96
 
    get :hello_world
97
 
    assert_response :success
98
 
    assert_equal "Hello world!", @response.body
99
 
  end
100
 
 
101
 
  def test_view_paths_override
102
 
    TestController.prepend_view_path "#{FIXTURE_LOAD_PATH}/override"
103
 
    get :hello_world
104
 
    assert_response :success
105
 
    assert_equal "Hello overridden world!", @response.body
106
 
  end
107
 
 
108
 
  def test_view_paths_override_for_layouts_in_controllers_with_a_module
109
 
    @controller = Test::SubController.new
110
 
    Test::SubController.view_paths = [ "#{FIXTURE_LOAD_PATH}/override", FIXTURE_LOAD_PATH, "#{FIXTURE_LOAD_PATH}/override2" ]
111
 
    get :hello_world
112
 
    assert_response :success
113
 
    assert_equal "layout: Hello overridden world!", @response.body
114
 
  end
115
 
 
116
 
  def test_view_paths_override_at_request_time
117
 
    get :hello_world_at_request_time
118
 
    assert_response :success
119
 
    assert_equal "Hello overridden world!", @response.body
120
 
  end
121
 
 
122
 
  def test_inheritance
123
 
    original_load_paths = ActionController::Base.view_paths
124
 
 
125
 
    self.class.class_eval %{
126
 
      class A < ActionController::Base; end
127
 
      class B < A; end
128
 
      class C < ActionController::Base; end
129
 
    }
130
 
 
131
 
    A.view_paths = ['a/path']
132
 
 
133
 
    assert_equal ['a/path'], A.view_paths.map(&:to_s)
134
 
    assert_equal A.view_paths, B.view_paths
135
 
    assert_equal original_load_paths, C.view_paths
136
 
 
137
 
    C.view_paths = []
138
 
    assert_nothing_raised { C.view_paths << 'c/path' }
139
 
    assert_equal ['c/path'], C.view_paths.map(&:to_s)
140
 
  end
141
 
end