class RespondToControllerTest
Constants
- NO_CONTENT_WARNING
Public Instance Methods
render(*args)
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 598 def render(*args) @action = args.first[:action] unless args.empty? @action ||= action_name response.body = "#{@action} - #{formats}" end
setup()
click to toggle source
Calls superclass method
# File actionpack/test/controller/mime/respond_to_test.rb, line 292 def setup super @request.host = "www.example.com" Mime::Type.register_alias("text/html", :iphone) Mime::Type.register("text/x-mobile", :mobile) end
teardown()
click to toggle source
Calls superclass method
# File actionpack/test/controller/mime/respond_to_test.rb, line 299 def teardown super Mime::Type.unregister(:iphone) Mime::Type.unregister(:mobile) end
test_all()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 318 def test_all @request.accept = "*/*" get :js_or_html assert_equal "HTML", @response.body # js is not part of all get :html_or_xml assert_equal "HTML", @response.body get :just_xml assert_equal "XML", @response.body end
test_browser_check_with_any_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 529 def test_browser_check_with_any_any @request.accept = "application/json, application/xml" get :json_xml_or_html assert_equal "JSON", @response.body @request.accept = "application/json, application/xml, */*" get :json_xml_or_html assert_equal "HTML", @response.body end
test_custom_constant()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 557 def test_custom_constant get :custom_constant_handling, format: "mobile" assert_equal "text/x-mobile", @response.content_type assert_equal "Mobile", @response.body end
test_custom_constant_handling_without_block()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 563 def test_custom_constant_handling_without_block get :custom_constant_handling_without_block, format: "mobile" assert_equal "text/x-mobile", @response.content_type assert_equal "Mobile", @response.body end
test_custom_types()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 457 def test_custom_types @request.accept = "application/crazy-xml" get :custom_type_handling assert_equal "application/crazy-xml", @response.content_type assert_equal "Crazy XML", @response.body @request.accept = "text/html" get :custom_type_handling assert_equal "text/html", @response.content_type assert_equal "HTML", @response.body end
test_extension_synonyms()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 591 def test_extension_synonyms get :html_xml_or_rss, format: "xhtml" assert_equal "HTML", @response.body end
test_firefox_simulation()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 475 def test_firefox_simulation @request.accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" get :html_or_xml assert_equal "HTML", @response.body end
test_forced_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 569 def test_forced_format get :html_xml_or_rss assert_equal "HTML", @response.body get :html_xml_or_rss, format: "html" assert_equal "HTML", @response.body get :html_xml_or_rss, format: "xml" assert_equal "XML", @response.body get :html_xml_or_rss, format: "rss" assert_equal "RSS", @response.body end
test_format_any_variant_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 820 def test_format_any_variant_any get :format_any_variant_any, format: :js, params: { v: :tablet } assert_equal "text/javascript", @response.content_type assert_equal "tablet", @response.body end
test_format_with_custom_response_type()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 613 def test_format_with_custom_response_type get :iphone_with_html_response_type assert_equal '<html><div id="html">Hello future from Firefox!</div></html>', @response.body get :iphone_with_html_response_type, format: "iphone" assert_equal "text/html", @response.content_type assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body end
test_format_with_custom_response_type_and_request_headers()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 622 def test_format_with_custom_response_type_and_request_headers @request.accept = "text/iphone" get :iphone_with_html_response_type assert_equal '<html><div id="iphone">Hello iPhone future from iPhone!</div></html>', @response.body assert_equal "text/html", @response.content_type end
test_handle_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 481 def test_handle_any @request.accept = "*/*" get :handle_any assert_equal "HTML", @response.body @request.accept = "text/javascript" get :handle_any assert_equal "Either JS or XML", @response.body @request.accept = "text/xml" get :handle_any assert_equal "Either JS or XML", @response.body end
test_handle_any_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 495 def test_handle_any_any @request.accept = "*/*" get :handle_any_any assert_equal "HTML", @response.body end
test_handle_any_any_explicit_html()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 506 def test_handle_any_any_explicit_html @request.accept = "text/html" get :handle_any_any assert_equal "HTML", @response.body end
test_handle_any_any_javascript()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 512 def test_handle_any_any_javascript @request.accept = "text/javascript" get :handle_any_any assert_equal "Whatever you ask for, I got it", @response.body end
test_handle_any_any_parameter_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 501 def test_handle_any_any_parameter_format get :handle_any_any, format: "html" assert_equal "HTML", @response.body end
test_handle_any_any_unknown_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 524 def test_handle_any_any_unknown_format get :handle_any_any, format: "php" assert_equal "Whatever you ask for, I got it", @response.body end
test_handle_any_any_xml()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 518 def test_handle_any_any_xml @request.accept = "text/xml" get :handle_any_any assert_equal "Whatever you ask for, I got it", @response.body end
test_html()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 305 def test_html @request.accept = "text/html" get :js_or_html assert_equal "HTML", @response.body get :html_or_xml assert_equal "HTML", @response.body assert_raises(ActionController::UnknownFormat) do get :just_xml end end
test_html_type_with_layout()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 539 def test_html_type_with_layout @request.accept = "text/html" get :all_types_with_layout assert_equal '<html><div id="html">HTML for all_types_with_layout</div></html>', @response.body end
test_internally_forced_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 583 def test_internally_forced_format get :forced_xml assert_equal "XML", @response.body get :forced_xml, format: "html" assert_equal "XML", @response.body end
test_invalid_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 629 def test_invalid_format assert_raises(ActionController::UnknownFormat) do get :using_defaults, format: "invalidformat" end end
test_invalid_variant()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 642 def test_invalid_variant assert_raises(ActionController::UnknownFormat) do get :variant_with_implicit_template_rendering, params: { v: :invalid } end end
test_js_or_anything()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 383 def test_js_or_anything @request.accept = "text/javascript, */*" get :js_or_html, xhr: true assert_equal "JS", @response.body get :html_or_xml, xhr: true assert_equal "HTML", @response.body get :just_xml, xhr: true assert_equal "XML", @response.body end
test_js_or_html()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 336 def test_js_or_html @request.accept = "text/javascript, text/html" get :js_or_html, xhr: true assert_equal "JS", @response.body @request.accept = "text/javascript, text/html" get :html_or_xml, xhr: true assert_equal "HTML", @response.body @request.accept = "text/javascript, text/html" assert_raises(ActionController::UnknownFormat) do get :just_xml, xhr: true end end
test_json_or_yaml()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 362 def test_json_or_yaml get :json_or_yaml, xhr: true assert_equal "JSON", @response.body get :json_or_yaml, format: "json" assert_equal "JSON", @response.body get :json_or_yaml, format: "yaml" assert_equal "YAML", @response.body { "YAML" => %w(text/yaml), "JSON" => %w(application/json text/x-json) }.each do |body, content_types| content_types.each do |content_type| @request.accept = content_type get :json_or_yaml assert_equal body, @response.body end end end
test_json_or_yaml_with_leading_star_star()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 352 def test_json_or_yaml_with_leading_star_star @request.accept = "*/*, application/json" get :json_xml_or_html assert_equal "HTML", @response.body @request.accept = "*/* , application/json" get :json_xml_or_html assert_equal "HTML", @response.body end
test_json_with_callback_sets_javascript_content_type()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 545 def test_json_with_callback_sets_javascript_content_type @request.accept = "application/json" get :json_with_callback assert_equal "/**/alert(JS)", @response.body assert_equal "text/javascript", @response.content_type end
test_missing_templates()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 635 def test_missing_templates get :missing_templates, format: :json assert_response :no_content get :missing_templates, format: :xml assert_response :no_content end
test_multiple_variants_for_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 714 def test_multiple_variants_for_format get :multiple_variants_for_format, params: { v: :tablet } assert_equal "text/html", @response.content_type assert_equal "tablet", @response.body end
test_no_variant_in_variant_setup()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 720 def test_no_variant_in_variant_setup get :variant_plus_none_for_format assert_equal "text/html", @response.content_type assert_equal "none", @response.body end
test_render_action_for_html()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 596 def test_render_action_for_html @controller.instance_eval do def render(*args) @action = args.first[:action] unless args.empty? @action ||= action_name response.body = "#{@action} - #{formats}" end end get :using_defaults assert_equal "using_defaults - #{[:html]}", @response.body get :using_defaults, format: "xml" assert_equal "using_defaults - #{[:xml]}", @response.body end
test_synonyms()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 447 def test_synonyms @request.accept = "application/javascript" get :js_or_html assert_equal "JS", @response.body @request.accept = "application/x-xml" get :html_xml_or_rss assert_equal "XML", @response.body end
test_using_defaults()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 395 def test_using_defaults @request.accept = "*/*" get :using_defaults assert_equal "text/html", @response.content_type assert_equal "Hello world!", @response.body @request.accept = "application/xml" get :using_defaults assert_equal "application/xml", @response.content_type assert_equal "<p>Hello world!</p>\n", @response.body end
test_using_defaults_with_all()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 407 def test_using_defaults_with_all @request.accept = "*/*" get :using_defaults_with_all assert_equal "HTML!", @response.body.strip @request.accept = "text/html" get :using_defaults_with_all assert_equal "HTML!", @response.body.strip @request.accept = "application/json" get :using_defaults_with_all assert_equal "ALL", @response.body end
test_using_defaults_with_type_list()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 421 def test_using_defaults_with_type_list @request.accept = "*/*" get :using_defaults_with_type_list assert_equal "text/html", @response.content_type assert_equal "Hello world!", @response.body @request.accept = "application/xml" get :using_defaults_with_type_list assert_equal "application/xml", @response.content_type assert_equal "<p>Hello world!</p>\n", @response.body end
test_variant_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 748 def test_variant_any get :variant_any, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body get :variant_any, params: { v: :tablet } assert_equal "text/html", @response.content_type assert_equal "any", @response.body get :variant_any, params: { v: :phablet } assert_equal "text/html", @response.content_type assert_equal "any", @response.body end
test_variant_any_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 762 def test_variant_any_any get :variant_any_any assert_equal "text/html", @response.content_type assert_equal "any", @response.body get :variant_any_any, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body get :variant_any_any, params: { v: :yolo } assert_equal "text/html", @response.content_type assert_equal "any", @response.body end
test_variant_any_implicit_render()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 800 def test_variant_any_implicit_render get :variant_any_implicit_render, params: { v: :tablet } assert_equal "text/html", @response.content_type assert_equal "tablet", @response.body get :variant_any_implicit_render, params: { v: :phablet } assert_equal "text/html", @response.content_type assert_equal "phablet", @response.body end
test_variant_any_with_none()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 810 def test_variant_any_with_none get :variant_any_with_none assert_equal "text/html", @response.content_type assert_equal "none or phone", @response.body get :variant_any_with_none, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "none or phone", @response.body end
test_variant_inline_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 776 def test_variant_inline_any get :variant_any, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body get :variant_inline_any, params: { v: :tablet } assert_equal "text/html", @response.content_type assert_equal "any", @response.body get :variant_inline_any, params: { v: :phablet } assert_equal "text/html", @response.content_type assert_equal "any", @response.body end
test_variant_inline_any_any()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 790 def test_variant_inline_any_any get :variant_inline_any_any, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body get :variant_inline_any_any, params: { v: :yolo } assert_equal "text/html", @response.content_type assert_equal "any", @response.body end
test_variant_inline_syntax()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 726 def test_variant_inline_syntax get :variant_inline_syntax assert_equal "text/html", @response.content_type assert_equal "none", @response.body get :variant_inline_syntax, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body end
test_variant_inline_syntax_with_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 736 def test_variant_inline_syntax_with_format get :variant_inline_syntax, format: :js assert_equal "text/javascript", @response.content_type assert_equal "js", @response.body end
test_variant_inline_syntax_without_block()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 742 def test_variant_inline_syntax_without_block get :variant_inline_syntax_without_block, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body end
test_variant_negotiation_block_syntax()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 832 def test_variant_negotiation_block_syntax get :variant_plus_none_for_format, params: { v: [:tablet, :phone] } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body end
test_variant_negotiation_inline_syntax()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 826 def test_variant_negotiation_inline_syntax get :variant_inline_syntax_without_block, params: { v: [:tablet, :phone] } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body end
test_variant_negotiation_without_block()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 838 def test_variant_negotiation_without_block get :variant_inline_syntax_without_block, params: { v: [:tablet, :phone] } assert_equal "text/html", @response.content_type assert_equal "phone", @response.body end
test_variant_not_set_regular_unknown_format()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 648 def test_variant_not_set_regular_unknown_format assert_raises(ActionController::UnknownFormat) do get :variant_with_implicit_template_rendering end end
test_variant_variant_not_set_and_without_implicit_rendering_from_browser()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 666 def test_variant_variant_not_set_and_without_implicit_rendering_from_browser assert_raises(ActionController::UnknownFormat) do get :variant_without_implicit_template_rendering end end
test_variant_variant_not_set_and_without_implicit_rendering_from_xhr()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 696 def test_variant_variant_not_set_and_without_implicit_rendering_from_xhr logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new old_logger, ActionController::Base.logger = ActionController::Base.logger, logger get :variant_without_implicit_template_rendering, xhr: true assert_response :no_content assert_equal 1, logger.logged(:info).select { |s| s == NO_CONTENT_WARNING }.size, "Implicit head :no_content not logged" ensure ActionController::Base.logger = old_logger end
test_variant_with_format_and_custom_render()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 708 def test_variant_with_format_and_custom_render get :variant_with_format_and_custom_render, params: { v: :phone } assert_equal "text/html", @response.content_type assert_equal "mobile", @response.body end
test_variant_with_implicit_template_rendering()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 654 def test_variant_with_implicit_template_rendering get :variant_with_implicit_template_rendering, params: { v: :mobile } assert_equal "text/html", @response.content_type assert_equal "mobile", @response.body end
test_variant_without_implicit_rendering_from_api()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 684 def test_variant_without_implicit_rendering_from_api logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new old_logger, ActionController::Base.logger = ActionController::Base.logger, logger get :variant_without_implicit_template_rendering, format: "json", params: { v: :does_not_matter } assert_response :no_content assert_equal 1, logger.logged(:info).select { |s| s == NO_CONTENT_WARNING }.size, "Implicit head :no_content not logged" ensure ActionController::Base.logger = old_logger end
test_variant_without_implicit_rendering_from_browser()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 660 def test_variant_without_implicit_rendering_from_browser assert_raises(ActionController::UnknownFormat) do get :variant_without_implicit_template_rendering, params: { v: :does_not_matter } end end
test_variant_without_implicit_rendering_from_xhr()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 672 def test_variant_without_implicit_rendering_from_xhr logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new old_logger, ActionController::Base.logger = ActionController::Base.logger, logger get :variant_without_implicit_template_rendering, xhr: true, params: { v: :does_not_matter } assert_response :no_content assert_equal 1, logger.logged(:info).select { |s| s == NO_CONTENT_WARNING }.size, "Implicit head :no_content not logged" ensure ActionController::Base.logger = old_logger end
test_with_atom_content_type()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 433 def test_with_atom_content_type @request.accept = "" @request.env["CONTENT_TYPE"] = "application/atom+xml" get :made_for_content_type, xhr: true assert_equal "ATOM", @response.body end
test_with_rss_content_type()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 440 def test_with_rss_content_type @request.accept = "" @request.env["CONTENT_TYPE"] = "application/rss+xml" get :made_for_content_type, xhr: true assert_equal "RSS", @response.body end
test_xhr()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 552 def test_xhr get :js_or_html, xhr: true assert_equal "JS", @response.body end
test_xhtml_alias()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 469 def test_xhtml_alias @request.accept = "application/xhtml+xml,application/xml" get :html_or_xml assert_equal "HTML", @response.body end
test_xml()
click to toggle source
# File actionpack/test/controller/mime/respond_to_test.rb, line 330 def test_xml @request.accept = "application/xml" get :html_xml_or_rss assert_equal "XML", @response.body end