Module: RSpec::Rails::Matchers Private

Included in:
RailsExampleGroup
Defined in:
lib/rspec/rails/matchers.rb,
lib/rspec/rails/matchers/be_valid.rb,
lib/rspec/rails/matchers/be_a_new.rb,
lib/rspec/rails/matchers/redirect_to.rb,
lib/rspec/rails/matchers/have_rendered.rb,
lib/rspec/rails/matchers/be_new_record.rb,
lib/rspec/rails/matchers/routing_matchers.rb,
lib/rspec/rails/matchers/have_http_status.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Container module for Rails specific matchers.

Defined Under Namespace

Modules: HaveHttpStatus, RedirectTo, RenderTemplate, RoutingMatchers Classes: BeANew

Instance Method Summary (collapse)

Instance Method Details

- (Object) be_a_new(model_class)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Passes if actual is an instance of model_class and returns false for persisted?. Typically used to specify instance variables assigned to views by controller actions

Use the with method to specify the specific attributes to match on the new record.

Examples:

get :new
assigns(:thing).should be_a_new(Thing)
post :create, :thing => { :name => "Illegal Value" }
assigns(:thing).should be_a_new(Thing).with(:name => nil)
76
77
78
# File 'lib/rspec/rails/matchers/be_a_new.rb', line 76
def be_a_new(model_class)
  BeANew.new(model_class)
end

- (Object) be_new_record

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Passes if actual returns false for persisted?.

Examples:

get :new
expect(assigns(:thing)).to be_new_record
24
25
26
# File 'lib/rspec/rails/matchers/be_new_record.rb', line 24
def be_new_record
  BeANewRecord.new
end

- (Object) be_valid(*args)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Passes if the given model instance's valid? method is true, meaning all of the ActiveModel::Validations passed and no errors exist. If a message is not given, a default message is shown listing each error.

Examples:

thing = Thing.new
expect(thing).to be_valid
43
44
45
# File 'lib/rspec/rails/matchers/be_valid.rb', line 43
def be_valid(*args)
  BeValid.new(*args)
end

- (Object) have_http_status(target)

Passes if response has a matching HTTP status code.

The following symbolic status codes are allowed:

  • Rack::Utils::SYMBOL_TO_STATUS_CODE
  • One of the defined ActionDispatch::TestResponse aliases:
    • :error
    • :missing
    • :redirect
    • :success

Examples:

Accepts numeric and symbol statuses

expect(response).to have_http_status(404)
expect(response).to have_http_status(:created)
expect(response).to have_http_status(:success)
expect(response).to have_http_status(:error)
expect(response).to have_http_status(:missing)
expect(response).to have_http_status(:redirect)

Works with standard response objects and Capybara's page

expect(response).to have_http_status(404)
expect(page).to     have_http_status(:created)

Raises:

  • (ArgumentError)

See Also:

355
356
357
358
# File 'lib/rspec/rails/matchers/have_http_status.rb', line 355
def have_http_status(target)
  raise ArgumentError, "Invalid HTTP status: nil" unless target
  HaveHttpStatus.matcher_for_status(target)
end