102 lines
2.3 KiB
Ruby
102 lines
2.3 KiB
Ruby
|
require File.dirname(__FILE__) + '/../abstract_unit'
|
||
|
|
||
|
class RespondToController < ActionController::Base
|
||
|
def html_xml_or_rss
|
||
|
respond_to do |type|
|
||
|
type.html { render :text => "HTML" }
|
||
|
type.xml { render :text => "XML" }
|
||
|
type.rss { render :text => "RSS" }
|
||
|
type.all { render :text => "Nothing" }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def js_or_html
|
||
|
respond_to do |type|
|
||
|
type.html { render :text => "HTML" }
|
||
|
type.js { render :text => "JS" }
|
||
|
type.all { render :text => "Nothing" }
|
||
|
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" }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def just_xml
|
||
|
respond_to do |type|
|
||
|
type.xml { render :text => "XML" }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def rescue_action(e)
|
||
|
raise unless ActionController::MissingTemplate === e
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class MimeControllerTest < Test::Unit::TestCase
|
||
|
def setup
|
||
|
@request = ActionController::TestRequest.new
|
||
|
@response = ActionController::TestResponse.new
|
||
|
|
||
|
@controller = RespondToController.new
|
||
|
@request.host = "www.example.com"
|
||
|
end
|
||
|
|
||
|
def test_html
|
||
|
@request.env["HTTP_ACCEPT"] = "text/html"
|
||
|
get :js_or_html
|
||
|
assert_equal 'HTML', @response.body
|
||
|
|
||
|
get :html_or_xml
|
||
|
assert_equal 'HTML', @response.body
|
||
|
|
||
|
get :just_xml
|
||
|
assert_response 406
|
||
|
end
|
||
|
|
||
|
def test_all
|
||
|
@request.env["HTTP_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
|
||
|
|
||
|
def test_xml
|
||
|
@request.env["HTTP_ACCEPT"] = "application/xml"
|
||
|
get :html_xml_or_rss
|
||
|
assert_equal 'XML', @response.body
|
||
|
end
|
||
|
|
||
|
def test_js_or_html
|
||
|
@request.env["HTTP_ACCEPT"] = "text/javascript; text/html"
|
||
|
get :js_or_html
|
||
|
assert_equal 'JS', @response.body
|
||
|
|
||
|
get :html_or_xml
|
||
|
assert_equal 'HTML', @response.body
|
||
|
|
||
|
get :just_xml
|
||
|
assert_response 406
|
||
|
end
|
||
|
|
||
|
def test_js_or_anything
|
||
|
@request.env["HTTP_ACCEPT"] = "text/javascript; */*"
|
||
|
get :js_or_html
|
||
|
assert_equal 'JS', @response.body
|
||
|
|
||
|
get :html_or_xml
|
||
|
assert_equal 'HTML', @response.body
|
||
|
|
||
|
get :just_xml
|
||
|
assert_equal 'XML', @response.body
|
||
|
end
|
||
|
end
|