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 < Test::Unit::TestCase
55 @controller = ContentTypeController.new
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)
61 @request = ActionController::TestRequest.new
62 @response = ActionController::TestResponse.new
65 def test_render_defaults
67 assert_equal "utf-8
", @response.charset
68 assert_equal Mime::HTML, @response.content_type
71 def test_render_changed_charset_default
72 ContentTypeController.default_charset = "utf-16
"
74 assert_equal "utf-16
", @response.charset
75 assert_equal Mime::HTML, @response.content_type
76 ContentTypeController.default_charset = "utf-8
"
79 def test_content_type_from_body
80 get :render_content_type_from_body
81 assert_equal "application
/rss+xml
", @response.content_type
82 assert_equal "utf-8
", @response.charset
85 def test_content_type_from_render
86 get :render_content_type_from_render
87 assert_equal "application
/rss+xml
", @response.content_type
88 assert_equal "utf-8
", @response.charset
91 def test_charset_from_body
92 get :render_charset_from_body
93 assert_equal Mime::HTML, @response.content_type
94 assert_equal "utf-16
", @response.charset
97 def test_nil_charset_from_body
98 get :render_nil_charset_from_body
99 assert_equal Mime::HTML, @response.content_type
100 assert_equal "utf-8
", @response.charset, @response.headers.inspect
103 def test_nil_default_for_rhtml
104 ContentTypeController.default_charset = nil
105 get :render_default_for_rhtml
106 assert_equal Mime::HTML, @response.content_type
107 assert_nil @response.charset, @response.headers.inspect
109 ContentTypeController.default_charset = "utf-8
"
112 def test_default_for_rhtml
113 get :render_default_for_rhtml
114 assert_equal Mime::HTML, @response.content_type
115 assert_equal "utf-8
", @response.charset
118 def test_default_for_rxml
119 get :render_default_for_rxml
120 assert_equal Mime::XML, @response.content_type
121 assert_equal "utf-8
", @response.charset
124 def test_default_for_rjs
125 xhr :post, :render_default_for_rjs
126 assert_equal Mime::JS, @response.content_type
127 assert_equal "utf-8
", @response.charset
130 def test_change_for_rxml
131 get :render_change_for_rxml
132 assert_equal Mime::HTML, @response.content_type
133 assert_equal "utf-8
", @response.charset
137 class AcceptBasedContentTypeTest < ActionController::TestCase
139 tests ContentTypeController
142 ActionController::Base.use_accept_header = true
146 ActionController::Base.use_accept_header = false
150 def test_render_default_content_types_for_respond_to
151 @request.accept = Mime::HTML.to_s
152 get :render_default_content_types_for_respond_to
153 assert_equal Mime::HTML, @response.content_type
155 @request.accept = Mime::JS.to_s
156 get :render_default_content_types_for_respond_to
157 assert_equal Mime::JS, @response.content_type
160 def test_render_default_content_types_for_respond_to_with_template
161 @request.accept = Mime::XML.to_s
162 get :render_default_content_types_for_respond_to
163 assert_equal Mime::XML, @response.content_type
166 def test_render_default_content_types_for_respond_to_with_overwrite
167 @request.accept = Mime::RSS.to_s
168 get :render_default_content_types_for_respond_to
169 assert_equal Mime::XML, @response.content_type