test/controller/mime_responds_test.rb in actionpack-1.12.5 vs test/controller/mime_responds_test.rb in actionpack-1.13.0
- old
+ new
@@ -18,10 +18,17 @@
type.js { render :text => "JS" }
type.all { render :text => "Nothing" }
end
end
+ def json_or_yaml
+ respond_to do |type|
+ type.json { render :text => "JSON" }
+ type.yaml { render :text => "YAML" }
+ end
+ end
+
def html_or_xml
respond_to do |type|
type.html { render :text => "HTML" }
type.xml { render :text => "XML" }
type.all { render :text => "Nothing" }
@@ -59,11 +66,34 @@
type.html { render :text => "HTML" }
type.custom("application/crazy-xml") { render :text => "Crazy XML" }
type.all { render :text => "Nothing" }
end
end
+
+ def custom_constant_handling
+ Mime::Type.register("text/x-mobile", :mobile)
+ respond_to do |type|
+ type.html { render :text => "HTML" }
+ type.mobile { render :text => "Mobile" }
+ end
+
+ Mime.send :remove_const, :MOBILE
+ end
+
+ def custom_constant_handling_without_block
+ Mime::Type.register("text/x-mobile", :mobile)
+
+ respond_to do |type|
+ type.html { render :text => "HTML" }
+ type.mobile
+ end
+
+ Mime.send :remove_const, :MOBILE
+ end
+
+
def handle_any
respond_to do |type|
type.html { render :text => "HTML" }
type.any(:js, :xml) { render :text => "Either JS or XML" }
end
@@ -139,10 +169,31 @@
get :just_xml
assert_response 406
end
+ def test_json_or_yaml
+ get :json_or_yaml
+ 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.env['HTTP_ACCEPT'] = content_type
+ get :json_or_yaml
+ assert_equal body, @response.body
+ end
+ end
+ end
+
def test_js_or_anything
@request.env["HTTP_ACCEPT"] = "text/javascript, */*"
get :js_or_html
assert_equal 'JS', @response.body
@@ -251,7 +302,50 @@
xhr :get, :js_or_html
assert_equal 'JS', @response.body
xhr :get, :using_defaults
assert_equal '$("body").visualEffect("highlight");', @response.body
+ end
+
+ def test_custom_constant
+ get :custom_constant_handling, :format => "mobile"
+ assert_equal "Mobile", @response.body
+ end
+
+ def custom_constant_handling_without_block
+
+ assert_raised(ActionController::RenderError) do
+ get :custom_constant_handling, :format => "mobile"
+ end
+ end
+
+ 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
+
+ def test_render_action_for_html
+ @controller.instance_eval do
+ def render(*args)
+ unless args.empty?
+ @action = args.first[:action]
+ end
+ response.body = @action
+ end
+ end
+
+ get :using_defaults
+ assert_equal "using_defaults", @response.body
+
+ get :using_defaults, :format => "xml"
+ assert_equal "using_defaults.rxml", @response.body
end
end