diff options
author | José Valim <jose.valim@gmail.com> | 2009-07-29 12:18:03 +0200 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2009-07-29 12:06:03 -0700 |
commit | 09de34ca56598ae5d0302a14715b2a11b6cc9845 (patch) | |
tree | 5d5e7f2d536aa269be04b9dfd86ede6354749f0c /actionpack/test | |
parent | bbe86077c2148559f7548520303b2e683ff86119 (diff) | |
download | rails-09de34ca56598ae5d0302a14715b2a11b6cc9845.tar.gz rails-09de34ca56598ae5d0302a14715b2a11b6cc9845.tar.bz2 rails-09de34ca56598ae5d0302a14715b2a11b6cc9845.zip |
Added respond_with.
Signed-off-by: Yehuda Katz <wycats@gmail.com>
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/mime_responds_test.rb | 70 | ||||
-rw-r--r-- | actionpack/test/fixtures/respond_with/using_resource.html.erb | 1 |
2 files changed, 70 insertions, 1 deletions
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb index 48b343272e..369d683d23 100644 --- a/actionpack/test/controller/mime_responds_test.rb +++ b/actionpack/test/controller/mime_responds_test.rb @@ -471,8 +471,20 @@ class RespondToControllerTest < ActionController::TestCase end end +class RespondResource + undef_method :to_json + + def to_xml + "XML" + end + + def to_js + "JS" + end +end + class RespondWithController < ActionController::Base - respond_to :html + respond_to :html, :json respond_to :xml, :except => :using_defaults respond_to :js, :only => :using_defaults @@ -485,6 +497,23 @@ class RespondWithController < ActionController::Base def using_defaults_with_type_list respond_to(:js, :xml) end + + def using_resource + respond_with(RespondResource.new) + end + + def using_resource_with_options + respond_with(RespondResource.new, :status => :unprocessable_entity) do |format| + format.js + end + end + +protected + + def _render_js(js, options) + self.content_type ||= Mime::JS + self.response_body = js.respond_to?(:to_js) ? js.to_js : js + end end class RespondWithControllerTest < ActionController::TestCase @@ -530,6 +559,37 @@ class RespondWithControllerTest < ActionController::TestCase assert_equal "<p>Hello world!</p>\n", @response.body end + def test_using_resource + @request.accept = "text/html" + get :using_resource + assert_equal "text/html", @response.content_type + assert_equal "Hello world!", @response.body + + @request.accept = "application/xml" + get :using_resource + assert_equal "application/xml", @response.content_type + assert_equal "XML", @response.body + + @request.accept = "application/json" + assert_raise ActionView::MissingTemplate do + get :using_resource + end + end + + def test_using_resource_with_options + @request.accept = "application/xml" + get :using_resource_with_options + assert_equal "application/xml", @response.content_type + assert_equal 422, @response.status + assert_equal "XML", @response.body + + @request.accept = "text/javascript" + get :using_resource_with_options + assert_equal "text/javascript", @response.content_type + assert_equal 422, @response.status + assert_equal "JS", @response.body + end + def test_not_acceptable @request.accept = "application/xml" get :using_defaults @@ -538,6 +598,14 @@ class RespondWithControllerTest < ActionController::TestCase @request.accept = "text/html" get :using_defaults_with_type_list assert_equal 406, @response.status + + @request.accept = "application/json" + get :using_defaults_with_type_list + assert_equal 406, @response.status + + @request.accept = "text/javascript" + get :using_resource + assert_equal 406, @response.status end end diff --git a/actionpack/test/fixtures/respond_with/using_resource.html.erb b/actionpack/test/fixtures/respond_with/using_resource.html.erb new file mode 100644 index 0000000000..6769dd60bd --- /dev/null +++ b/actionpack/test/fixtures/respond_with/using_resource.html.erb @@ -0,0 +1 @@ +Hello world!
\ No newline at end of file |