From 36006d83b4d9781ef502215de82c4132bd1f4b8e Mon Sep 17 00:00:00 2001 From: Gabe Berke-Williams Date: Fri, 30 Mar 2012 10:44:46 -0400 Subject: [PATCH] Mutate less. --- .../action_controller/route_matcher.rb | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/shoulda/matchers/action_controller/route_matcher.rb b/lib/shoulda/matchers/action_controller/route_matcher.rb index f3e6e8aea..63ec8f677 100644 --- a/lib/shoulda/matchers/action_controller/route_matcher.rb +++ b/lib/shoulda/matchers/action_controller/route_matcher.rb @@ -27,16 +27,16 @@ def route(method, path) end class RouteMatcher # :nodoc: - def initialize(method, path, context) @method = method @path = path @context = context end + attr_reader :failure_message, :negative_failure_message + def to(params) - @params = params - stringify_params! + @params = stringify_params(params) self end @@ -46,26 +46,31 @@ def in_context(context) end def matches?(controller) - @controller = controller - guess_controller! + guess_controller!(controller) route_recognized? end - attr_reader :failure_message, :negative_failure_message - def description "route #{@method.to_s.upcase} #{@path} to/from #{@params.inspect}" end private - def guess_controller! - @params[:controller] ||= @controller.controller_path + def guess_controller!(controller) + @params[:controller] ||= controller.controller_path end - def stringify_params! - @params.each do |key, value| - @params[key] = value.is_a?(Array) ? value.collect {|v| v.to_param } : value.to_param + def stringify_params(params) + params.each do |key, value| + params[key] = stringify(value) + end + end + + def stringify(value) + if value.is_a?(Array) + value.map(&:to_param) + else + value.to_param end end @@ -85,9 +90,7 @@ def route_recognized? false end end - end - end end end