22
33require "action_controller"
44require "i18n"
5+ require "json"
56require "spec_helper"
67
78RSpec . describe "exceptions_app" do
89 include Rack ::Test ::Methods
910 def app = RestfulError ::ExceptionsApp . new
1011
12+ let ( :body ) { request ; last_response . body }
13+
1114 shared_context "html" do
1215 let ( :request ) { get "/#{ status_code } " , { } , 'HTTP_ACCEPT' => 'text/html' }
13- let ( :body ) { request ; last_response . body }
1416 end
1517 shared_context "json" do
1618 let ( :request ) { get "/#{ status_code } " , { } , 'HTTP_ACCEPT' => 'application/json' }
17- let ( :json ) { request ; JSON . parse ( last_response . body ) }
19+ let ( :json ) { JSON . parse ( body ) }
1820 end
1921
2022 before do
2123 env "action_dispatch.exception" , exception
2224 end
2325 describe RestfulError [ 404 ] do
2426 let ( :status_code ) { 404 }
27+ let ( :exception ) { described_class . new }
2528 context 'html' do
2629 include_context "html"
2730 context 'default message' do
28- let ( :exception ) { described_class . new }
2931 it do
3032 expect ( body ) . to include "<p>Page not found</p>"
3133 # expect(body).to include "</html>" # layout is rendered
@@ -36,7 +38,6 @@ def app = RestfulError::ExceptionsApp.new
3638 context 'json' do
3739 include_context "json"
3840 context 'default message' do
39- let ( :exception ) { described_class . new }
4041 it do
4142 expect ( json ) . to eq ( { status_code : 404 , reason_phrase : "Not Found" , response_message : 'Page not found' } . stringify_keys )
4243 expect ( last_response . status ) . to eq status_code
@@ -55,6 +56,14 @@ def response_message = "custom message"
5556 end
5657 end
5758 end
59+ context 'css' do
60+ let ( :request ) { get "/#{ status_code } " , { } , 'HTTP_ACCEPT' => 'text/css' }
61+
62+ it do
63+ expect ( body ) . not_to include "<p>"
64+ expect ( last_response . status ) . to eq status_code
65+ end
66+ end
5867 end
5968 context ActionController ::RoutingError do
6069 let ( :exception ) { described_class . new ( "no route" ) }
0 commit comments