1 require 'abstract_unit'
3 class ContentTypeController
< ActionController
::Base
4 def render_content_type_from_body
5 response
.content_type
= Mime
::RSS
6 render
:text => "hello world!"
10 render :text => "hello world!
"
13 def render_content_type_from_render
14 render :text => "hello world!
", :content_type => Mime::RSS
17 def render_charset_from_body
18 response.charset = "utf-16
"
19 render :text => "hello world!
"
22 def render_nil_charset_from_body
23 response.charset = nil
24 render :text => "hello world!
"
27 def render_default_for_rhtml
30 def render_default_for_rxml
33 def render_default_for_rjs
36 def render_change_for_rxml
37 response.content_type = Mime::HTML
38 render :action => "render_default_for_rxml
"
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 }
50 def rescue_action(e) raise end
53 class ContentTypeTest < ActionController::TestCase
54 tests ContentTypeController
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)
62 def test_render_defaults
64 assert_equal "utf-8
", @response.charset
65 assert_equal Mime::HTML, @response.content_type
68 def test_render_changed_charset_default
69 ContentTypeController.default_charset = "utf-16
"
71 assert_equal "utf-16
", @response.charset
72 assert_equal Mime::HTML, @response.content_type
73 ContentTypeController.default_charset = "utf-8
"
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
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
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
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
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
106 ContentTypeController.default_charset = "utf-8
"
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
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
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
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
134 class AcceptBasedContentTypeTest < ActionController::TestCase
136 tests ContentTypeController
139 ActionController::Base.use_accept_header = true
143 ActionController::Base.use_accept_header = false
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
152 @request.accept = Mime::JS.to_s
153 get :render_default_content_types_for_respond_to
154 assert_equal Mime::JS, @response.content_type
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
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