Module: RSpec::Rails::ControllerExampleGroup::ClassMethods
- Defined in:
- lib/rspec/rails/example/controller_example_group.rb
Instance Method Summary collapse
-
#controller(base_class = ApplicationController, &body) ⇒ Object
Supports a simple DSL for specifying behaviour of ApplicationController.
- #controller_class ⇒ Object
Instance Method Details
#controller(base_class = ApplicationController, &body) ⇒ Object
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.
Examples
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.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/rspec/rails/example/controller_example_group.rb', line 127 def controller(base_class = ApplicationController, &body) [:example_group][:describes] = Class.new(base_class, &body) [: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 |
#controller_class ⇒ Object
87 88 89 |
# File 'lib/rspec/rails/example/controller_example_group.rb', line 87 def controller_class describes end |