aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/new_base/render_action_test.rb
blob: 188fb4426555e73526286afbdd4207b796553c0c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")

module HappyPath
  
  # This has no layout and it works
  class RenderActionController < ActionController::Base2
    
    def render_action_hello_world
      render :action => "hello_world"
    end
    
    def render_action_hello_world_as_string
      render "hello_world"
    end
    
    def render_action_hello_world_as_string_with_options
      render "hello_world", :status => 404
    end
    
    def render_action_hello_world_as_symbol
      render :hello_world
    end

    def render_action_hello_world_with_symbol
      render :action => :hello_world
    end
    
  end
  
  class TestRenderAction < SimpleRouteCase
    
    describe "Rendering an action using :action => <String>"
    
    get "/happy_path/render_action/render_action_hello_world"
    assert_body   "Hello world!"
    assert_status 200
    
  end
  
  class TestRenderActionWithString < SimpleRouteCase
    
    describe "Render an action using 'hello_world'"
    
    get "/happy_path/render_action/render_action_hello_world_as_string"
    assert_body   "Hello world!"
    assert_status 200
    
  end
  
  class TestRenderActionWithStringAndOptions < SimpleRouteCase
    
    describe "Render an action using 'hello_world'"
    
    get "/happy_path/render_action/render_action_hello_world_as_string_with_options"
    assert_body   "Hello world!"
    assert_status 404
    
  end
  
  class TestRenderActionAsSymbol < SimpleRouteCase
    describe "Render an action using :hello_world"
    
    get "/happy_path/render_action/render_action_hello_world_as_symbol"
    assert_body   "Hello world!"
    assert_status 200
  end
  
  class TestRenderActionWithSymbol < SimpleRouteCase
    describe "Render an action using :action => :hello_world"
    
    get "/happy_path/render_action/render_action_hello_world_with_symbol"
    assert_body   "Hello world!"
    assert_status 200
  end
  
  # # ==== Render actions with layouts ====
  
  class RenderActionWithLayoutController < ActionController::Base2
    # Set the view path to an application view structure with layouts
    self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_application_layout')]
    
    def hello_world
      render :action => "hello_world"
    end
  end
  
  class RenderActionWithControllerLayoutController < ActionController::Base2
    self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_controller_layout')]
    
    def hello_world
      render :action => "hello_world"
    end
  end
  
  class RenderActionWithControllerLayoutFirstController < ActionController::Base2
    self.view_paths = [File.join(File.dirname(__FILE__), 'views', 'with_both_layouts')]
    
    def hello_world
      render :action => "hello_world"
    end
  end
  
  class TestRenderActionWithLayout < SimpleRouteCase
    describe %(
      Render hello_world and implicitly use application.html.erb as a layout if 
      no layout is specified and no controller layout is present
    )
      
    get "/happy_path/render_action_with_layout/hello_world"
    assert_body   "OHAI Hello World! KTHXBAI"
    assert_status 200
  end
  
  class TestRenderActionWithControllerLayout < SimpleRouteCase
    describe "Render hello_world and implicitly use <controller_path>.html.erb as a layout."
      
    get "/happy_path/render_action_with_controller_layout/hello_world"
    assert_body   "With Controller Layout! Hello World! KTHXBAI"
    assert_status 200
  end
  
  class TestRenderActionWithControllerLayoutFirst < SimpleRouteCase
    describe "Render hello_world and implicitly use <controller_path>.html.erb over application.html.erb as a layout"
    
    get "/happy_path/render_action_with_controller_layout_first/hello_world"
    assert_body   "With Controller Layout! Hello World! KTHXBAI"
    assert_status 200
  end
  
  # TODO: Implement a FixtureViewPath
end