Class: RSpec::Rails::Matchers::RoutingMatchers::RouteToMatcher

Inherits:
Matchers::BuiltIn::BaseMatcher
  • Object
show all
Defined in:
lib/rspec/rails/matchers/routing_matchers.rb

Instance Method Summary (collapse)

Constructor Details

- (RouteToMatcher) initialize(scope, *expected)

Returns a new instance of RouteToMatcher



7
8
9
10
11
12
13
14
15
16
# File 'lib/rspec/rails/matchers/routing_matchers.rb', line 7

def initialize(scope, *expected)
  @scope = scope
  @expected = expected[1] || {}
  if Hash === expected[0]
    @expected.merge!(expected[0])
  else
    controller, action = expected[0].split('#')
    @expected.merge!(:controller => controller, :action => action)
  end
end

Instance Method Details

- (Object) description



42
43
44
# File 'lib/rspec/rails/matchers/routing_matchers.rb', line 42

def description
  "route #{@actual.inspect} to #{@expected.inspect}"
end

- (Object) failure_message_for_should

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.



34
35
36
# File 'lib/rspec/rails/matchers/routing_matchers.rb', line 34

def failure_message_for_should
  rescued_exception.message
end

- (Object) failure_message_for_should_not



38
39
40
# File 'lib/rspec/rails/matchers/routing_matchers.rb', line 38

def failure_message_for_should_not
  "expected #{@actual.inspect} not to route to #{@expected.inspect}"
end

- (Boolean) matches?(verb_to_path_map)

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.

Returns:

  • (Boolean)


19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/rspec/rails/matchers/routing_matchers.rb', line 19

def matches?(verb_to_path_map)
  @actual = @verb_to_path_map = verb_to_path_map
  # assert_recognizes does not consider ActionController::RoutingError an
  # assertion failure, so we have to capture that and Assertion here.
  match_unless_raises ActiveSupport::TestCase::Assertion, ActionController::RoutingError do
    path, query = *verb_to_path_map.values.first.split('?')
    @scope.assert_recognizes(
      @expected,
      {:method => verb_to_path_map.keys.first, :path => path},
      Rack::Utils::parse_query(query)
    )
  end
end