Supports a simple DSL for specifying behaviour of ApplicationController. Creates an anonymous subclass of ApplicationController and evals the body in that context. Also sets up implicit routes for this controller, that are separate from those defined in config/routes.rb.
describe ApplicationController do controller do def index raise ApplicationController::AccessDenied end end describe "handling AccessDenied exceptions" do it "redirects to the /401.html page" do get :index response.should redirect_to("/401.html") end end end
If you would like to spec a subclass of ApplicationController, call controller like so:
controller(ApplicationControllerSubclass) do # .... end
NOTICE: Due to Ruby 1.8 scoping rules in anoymous subclasses, constants defined in ApplicationController must be fully qualified (e.g. ApplicationController::AccessDenied) in the block passed to the controller method. Any instance methods, filters, etc, that are defined in ApplicationController, however, are accessible from within the block.
# File lib/rspec/rails/example/controller_example_group.rb, line 127 def controller(base_class = ApplicationController, &body) metadata[:example_group][:describes] = Class.new(base_class, &body) metadata[:example_group][:describes].singleton_class.class_eval do def name; "AnonymousController" end end before do @orig_routes, @routes = @routes, ActionDispatch::Routing::RouteSet.new @routes.draw { resources :anonymous } end after do @routes, @orig_routes = @orig_routes, nil end end
Generated with the Darkfish Rdoc Generator 2.