32c1757ef9765af3c287e0a461b0ad0f9f915fa8
[feedcatcher.git] / vendor / rails / actionpack / test / controller / content_type_test.rb
1 require 'abstract_unit'
2
3 class ContentTypeController < ActionController::Base
4 def render_content_type_from_body
5 response.content_type = Mime::RSS
6 render :text => "hello world!"
7 end
8
9 def render_defaults
10 render :text => "hello world!"
11 end
12
13 def render_content_type_from_render
14 render :text => "hello world!", :content_type => Mime::RSS
15 end
16
17 def render_charset_from_body
18 response.charset = "utf-16"
19 render :text => "hello world!"
20 end
21
22 def render_nil_charset_from_body
23 response.charset = nil
24 render :text => "hello world!"
25 end
26
27 def render_default_for_rhtml
28 end
29
30 def render_default_for_rxml
31 end
32
33 def render_default_for_rjs
34 end
35
36 def render_change_for_rxml
37 response.content_type = Mime::HTML
38 render :action => "render_default_for_rxml"
39 end
40
41 def render_default_content_types_for_respond_to
42 respond_to do |format|
43 format.html { render :text => "hello world!" }
44 format.xml { render :action => "render_default_content_types_for_respond_to.rhtml" }
45 format.js { render :text => "hello world!" }
46 format.rss { render :text => "hello world!", :content_type => Mime::XML }
47 end
48 end
49
50 def rescue_action(e) raise end
51 end
52
53 class ContentTypeTest < ActionController::TestCase
54 tests ContentTypeController
55
56 def setup
57 # enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
58 # a more accurate simulation of what happens in "real life".
59 @controller.logger = Logger.new(nil)
60 end
61
62 def test_render_defaults
63 get :render_defaults
64 assert_equal "utf-8", @response.charset
65 assert_equal Mime::HTML, @response.content_type
66 end
67
68 def test_render_changed_charset_default
69 ContentTypeController.default_charset = "utf-16"
70 get :render_defaults
71 assert_equal "utf-16", @response.charset
72 assert_equal Mime::HTML, @response.content_type
73 ContentTypeController.default_charset = "utf-8"
74 end
75
76 def test_content_type_from_body
77 get :render_content_type_from_body
78 assert_equal "application/rss+xml", @response.content_type
79 assert_equal "utf-8", @response.charset
80 end
81
82 def test_content_type_from_render
83 get :render_content_type_from_render
84 assert_equal "application/rss+xml", @response.content_type
85 assert_equal "utf-8", @response.charset
86 end
87
88 def test_charset_from_body
89 get :render_charset_from_body
90 assert_equal Mime::HTML, @response.content_type
91 assert_equal "utf-16", @response.charset
92 end
93
94 def test_nil_charset_from_body
95 get :render_nil_charset_from_body
96 assert_equal Mime::HTML, @response.content_type
97 assert_equal "utf-8", @response.charset, @response.headers.inspect
98 end
99
100 def test_nil_default_for_rhtml
101 ContentTypeController.default_charset = nil
102 get :render_default_for_rhtml
103 assert_equal Mime::HTML, @response.content_type
104 assert_nil @response.charset, @response.headers.inspect
105 ensure
106 ContentTypeController.default_charset = "utf-8"
107 end
108
109 def test_default_for_rhtml
110 get :render_default_for_rhtml
111 assert_equal Mime::HTML, @response.content_type
112 assert_equal "utf-8", @response.charset
113 end
114
115 def test_default_for_rxml
116 get :render_default_for_rxml
117 assert_equal Mime::XML, @response.content_type
118 assert_equal "utf-8", @response.charset
119 end
120
121 def test_default_for_rjs
122 xhr :post, :render_default_for_rjs
123 assert_equal Mime::JS, @response.content_type
124 assert_equal "utf-8", @response.charset
125 end
126
127 def test_change_for_rxml
128 get :render_change_for_rxml
129 assert_equal Mime::HTML, @response.content_type
130 assert_equal "utf-8", @response.charset
131 end
132 end
133
134 class AcceptBasedContentTypeTest < ActionController::TestCase
135
136 tests ContentTypeController
137
138 def setup
139 ActionController::Base.use_accept_header = true
140 end
141
142 def teardown
143 ActionController::Base.use_accept_header = false
144 end
145
146
147 def test_render_default_content_types_for_respond_to
148 @request.accept = Mime::HTML.to_s
149 get :render_default_content_types_for_respond_to
150 assert_equal Mime::HTML, @response.content_type
151
152 @request.accept = Mime::JS.to_s
153 get :render_default_content_types_for_respond_to
154 assert_equal Mime::JS, @response.content_type
155 end
156
157 def test_render_default_content_types_for_respond_to_with_template
158 @request.accept = Mime::XML.to_s
159 get :render_default_content_types_for_respond_to
160 assert_equal Mime::XML, @response.content_type
161 end
162
163 def test_render_default_content_types_for_respond_to_with_overwrite
164 @request.accept = Mime::RSS.to_s
165 get :render_default_content_types_for_respond_to
166 assert_equal Mime::XML, @response.content_type
167 end
168 end