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