Files

Class/Module Index [+]

Quicksearch

RSpec::Rails::ControllerExampleGroup::ClassMethods

Public Instance Methods

controller(base_class = ApplicationController, &body) click to toggle source

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.

# 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
controller_class() click to toggle source
# File lib/rspec/rails/example/controller_example_group.rb, line 87
def controller_class
  describes
end
name() click to toggle source
# File lib/rspec/rails/example/controller_example_group.rb, line 130
def name; "AnonymousController" end

[Validate]

Generated with the Darkfish Rdoc Generator 2.