Module: RSpec::Rails::ControllerExampleGroup

Extended by:
ActiveSupport::Concern
Includes:
ActionController::TestCase::Behavior, Matchers::RedirectTo, Matchers::RenderTemplate, Matchers::RoutingMatchers, RailsExampleGroup, ViewRendering
Defined in:
lib/rspec/rails/example/controller_example_group.rb

Defined Under Namespace

Modules: BypassRescue, ClassMethods

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods included from Matchers::RoutingMatchers

#be_routable, #route_to

Methods included from Matchers::RenderTemplate

#have_rendered

Methods included from Matchers::RedirectTo

#redirect_to

Methods included from ViewRendering

#render_views?

Methods included from Matchers

#be_a_new, #be_new_record, #be_valid

Methods included from MinitestLifecycleAdapter

#after_setup, #after_teardown, #before_setup, #before_teardown

Methods included from SetupAndTeardownAdapter

#method_name

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

- (Object) method_missing(method, *args, &block)

If method is a named_route, delegates to the RouteSet associated with this controller.



145
146
147
148
149
150
151
152
153
# File 'lib/rspec/rails/example/controller_example_group.rb', line 145

def method_missing(method, *args, &block)
  if defined?(@routes) && @routes.named_routes.helpers.include?(method)
    controller.send(method, *args, &block)
  elsif defined?(@orig_routes) && @orig_routes && @orig_routes.named_routes.helpers.include?(method)
    controller.send(method, *args, &block)
  else
    super
  end
end

Instance Attribute Details

- (Object) controller (readonly)

Returns the value of attribute controller



107
108
109
# File 'lib/rspec/rails/example/controller_example_group.rb', line 107

def controller
  @controller
end

- (Object) routes

Returns the value of attribute routes



107
108
109
# File 'lib/rspec/rails/example/controller_example_group.rb', line 107

def routes
  @routes
end

Instance Method Details

- (Object) bypass_rescue

Extends the controller with a module that overrides rescue_with_handler to raise the exception passed to it. Use this to specify that an action should raise an exception given appropriate conditions.

Examples:


describe ProfilesController do
  it "raises a 403 when a non-admin user tries to view another user's profile" do
    profile = create_profile
     profile.user

    expect do
      bypass_rescue
      get :show, :id => profile.id + 1
    end.to raise_error(/403 Forbidden/)
  end
end


139
140
141
# File 'lib/rspec/rails/example/controller_example_group.rb', line 139

def bypass_rescue
  controller.extend(BypassRescue)
end