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