content_type_test.rb 4.4 KB
Newer Older
1
require 'abstract_unit'
2

3
class OldContentTypeController < ActionController::Base
4
  # :ported:
5 6 7 8 9
  def render_content_type_from_body
    response.content_type = Mime::RSS
    render :text => "hello world!"
  end

10
  # :ported:
11 12 13 14
  def render_defaults
    render :text => "hello world!"
  end

15
  # :ported:
16 17 18
  def render_content_type_from_render
    render :text => "hello world!", :content_type => Mime::RSS
  end
19

20
  # :ported:
21 22 23 24
  def render_charset_from_body
    response.charset = "utf-16"
    render :text => "hello world!"
  end
25

26
  # :ported:
27 28 29 30 31
  def render_nil_charset_from_body
    response.charset = nil
    render :text => "hello world!"
  end

32
  def render_default_for_erb
33 34
  end

35
  def render_default_for_builder
36 37
  end

38
  def render_change_for_builder
39
    response.content_type = Mime::HTML
40
    render :action => "render_default_for_builder"
41 42
  end

43 44 45
  def render_default_content_types_for_respond_to
    respond_to do |format|
      format.html { render :text   => "hello world!" }
46
      format.xml  { render :action => "render_default_content_types_for_respond_to" }
47 48 49 50 51
      format.js   { render :text   => "hello world!" }
      format.rss  { render :text   => "hello world!", :content_type => Mime::XML }
    end
  end

52 53 54
  def rescue_action(e) raise end
end

55
class ContentTypeTest < ActionController::TestCase
56
  tests OldContentTypeController
57

58
  def setup
59
    super
60 61
    # enable a logger so that (e.g.) the benchmarking stuff runs, so we can get
    # a more accurate simulation of what happens in "real life".
62
    @controller.logger = ActiveSupport::Logger.new(nil)
63 64
  end

65
  # :ported:
66 67 68 69 70 71 72
  def test_render_defaults
    get :render_defaults
    assert_equal "utf-8", @response.charset
    assert_equal Mime::HTML, @response.content_type
  end

  def test_render_changed_charset_default
73
    OldContentTypeController.default_charset = "utf-16"
74
    get :render_defaults
75
    assert_equal "utf-16", @response.charset
76
    assert_equal Mime::HTML, @response.content_type
N
Neeraj Singh 已提交
77
  ensure
78
    OldContentTypeController.default_charset = "utf-8"
79 80
  end

81
  # :ported:
82 83
  def test_content_type_from_body
    get :render_content_type_from_body
84
    assert_equal Mime::RSS, @response.content_type
85
    assert_equal "utf-8", @response.charset
86 87
  end

88
  # :ported:
89 90
  def test_content_type_from_render
    get :render_content_type_from_render
91
    assert_equal Mime::RSS, @response.content_type
92
    assert_equal "utf-8", @response.charset
93 94
  end

95
  # :ported:
96 97
  def test_charset_from_body
    get :render_charset_from_body
98
    assert_equal Mime::HTML, @response.content_type
99
    assert_equal "utf-16", @response.charset
100 101
  end

102
  # :ported:
103 104
  def test_nil_charset_from_body
    get :render_nil_charset_from_body
105
    assert_equal Mime::HTML, @response.content_type
106 107 108
    assert_equal "utf-8", @response.charset, @response.headers.inspect
  end

109
  def test_nil_default_for_erb
110
    OldContentTypeController.default_charset = nil
111
    get :render_default_for_erb
112 113 114
    assert_equal Mime::HTML, @response.content_type
    assert_nil @response.charset, @response.headers.inspect
  ensure
115
    OldContentTypeController.default_charset = "utf-8"
116 117
  end

118 119
  def test_default_for_erb
    get :render_default_for_erb
120
    assert_equal Mime::HTML, @response.content_type
121
    assert_equal "utf-8", @response.charset
122 123
  end

124 125
  def test_default_for_builder
    get :render_default_for_builder
126
    assert_equal Mime::XML, @response.content_type
127
    assert_equal "utf-8", @response.charset
128 129
  end

130 131
  def test_change_for_builder
    get :render_change_for_builder
132
    assert_equal Mime::HTML, @response.content_type
133
    assert_equal "utf-8", @response.charset
134
  end
135 136 137
end

class AcceptBasedContentTypeTest < ActionController::TestCase
138
  tests OldContentTypeController
139

140
  def test_render_default_content_types_for_respond_to
141
    @request.accept = Mime::HTML.to_s
142 143 144
    get :render_default_content_types_for_respond_to
    assert_equal Mime::HTML, @response.content_type

145
    @request.accept = Mime::JS.to_s
146 147 148 149 150
    get :render_default_content_types_for_respond_to
    assert_equal Mime::JS, @response.content_type
  end

  def test_render_default_content_types_for_respond_to_with_template
151
    @request.accept = Mime::XML.to_s
152 153 154
    get :render_default_content_types_for_respond_to
    assert_equal Mime::XML, @response.content_type
  end
155

156
  def test_render_default_content_types_for_respond_to_with_overwrite
157
    @request.accept = Mime::RSS.to_s
158 159 160
    get :render_default_content_types_for_respond_to
    assert_equal Mime::XML, @response.content_type
  end
161
end