X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=vendor%2Frails%2Factionpack%2Ftest%2Fcontroller%2Fcontent_type_test.rb;fp=vendor%2Frails%2Factionpack%2Ftest%2Fcontroller%2Fcontent_type_test.rb;h=ae71d62e119eb268c0e1fa39c76ee43713f335cb;hb=d115f2e23823271635bad69229a42cd8ac68debe;hp=0000000000000000000000000000000000000000;hpb=37cb670bf3ddde90b214e591f100ed4446469484;p=depot.git diff --git a/vendor/rails/actionpack/test/controller/content_type_test.rb b/vendor/rails/actionpack/test/controller/content_type_test.rb new file mode 100644 index 0000000..ae71d62 --- /dev/null +++ b/vendor/rails/actionpack/test/controller/content_type_test.rb @@ -0,0 +1,171 @@ +require 'abstract_unit' + +class ContentTypeController < ActionController::Base + def render_content_type_from_body + response.content_type = Mime::RSS + render :text => "hello world!" + end + + def render_defaults + render :text => "hello world!" + end + + def render_content_type_from_render + render :text => "hello world!", :content_type => Mime::RSS + end + + def render_charset_from_body + response.charset = "utf-16" + render :text => "hello world!" + end + + def render_nil_charset_from_body + response.charset = nil + render :text => "hello world!" + end + + def render_default_for_rhtml + end + + def render_default_for_rxml + end + + def render_default_for_rjs + end + + def render_change_for_rxml + response.content_type = Mime::HTML + render :action => "render_default_for_rxml" + end + + def render_default_content_types_for_respond_to + respond_to do |format| + format.html { render :text => "hello world!" } + format.xml { render :action => "render_default_content_types_for_respond_to.rhtml" } + format.js { render :text => "hello world!" } + format.rss { render :text => "hello world!", :content_type => Mime::XML } + end + end + + def rescue_action(e) raise end +end + +class ContentTypeTest < Test::Unit::TestCase + def setup + @controller = ContentTypeController.new + + # 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". + @controller.logger = Logger.new(nil) + + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + 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 + ContentTypeController.default_charset = "utf-16" + get :render_defaults + assert_equal "utf-16", @response.charset + assert_equal Mime::HTML, @response.content_type + ContentTypeController.default_charset = "utf-8" + end + + def test_content_type_from_body + get :render_content_type_from_body + assert_equal "application/rss+xml", @response.content_type + assert_equal "utf-8", @response.charset + end + + def test_content_type_from_render + get :render_content_type_from_render + assert_equal "application/rss+xml", @response.content_type + assert_equal "utf-8", @response.charset + end + + def test_charset_from_body + get :render_charset_from_body + assert_equal Mime::HTML, @response.content_type + assert_equal "utf-16", @response.charset + end + + def test_nil_charset_from_body + get :render_nil_charset_from_body + assert_equal Mime::HTML, @response.content_type + assert_equal "utf-8", @response.charset, @response.headers.inspect + end + + def test_nil_default_for_rhtml + ContentTypeController.default_charset = nil + get :render_default_for_rhtml + assert_equal Mime::HTML, @response.content_type + assert_nil @response.charset, @response.headers.inspect + ensure + ContentTypeController.default_charset = "utf-8" + end + + def test_default_for_rhtml + get :render_default_for_rhtml + assert_equal Mime::HTML, @response.content_type + assert_equal "utf-8", @response.charset + end + + def test_default_for_rxml + get :render_default_for_rxml + assert_equal Mime::XML, @response.content_type + assert_equal "utf-8", @response.charset + end + + def test_default_for_rjs + xhr :post, :render_default_for_rjs + assert_equal Mime::JS, @response.content_type + assert_equal "utf-8", @response.charset + end + + def test_change_for_rxml + get :render_change_for_rxml + assert_equal Mime::HTML, @response.content_type + assert_equal "utf-8", @response.charset + end +end + +class AcceptBasedContentTypeTest < ActionController::TestCase + + tests ContentTypeController + + def setup + ActionController::Base.use_accept_header = true + end + + def teardown + ActionController::Base.use_accept_header = false + end + + + def test_render_default_content_types_for_respond_to + @request.accept = Mime::HTML.to_s + get :render_default_content_types_for_respond_to + assert_equal Mime::HTML, @response.content_type + + @request.accept = Mime::JS.to_s + 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 + @request.accept = Mime::XML.to_s + get :render_default_content_types_for_respond_to + assert_equal Mime::XML, @response.content_type + end + + def test_render_default_content_types_for_respond_to_with_overwrite + @request.accept = Mime::RSS.to_s + get :render_default_content_types_for_respond_to + assert_equal Mime::XML, @response.content_type + end +end