class Lolita::Test::Matchers::BeRoutable
Public Instance Methods
failure_message()
click to toggle source
# File lib/lolita/test/matchers.rb, line 18 def failure_message "expected #{@url.inspect}#{@method ? " with method #{@method.inspect}" : ""} to be routable" end
matches?(actual)
click to toggle source
# File lib/lolita/test/matchers.rb, line 8 def matches?(actual) @actual=actual collect_routes set_method_and_url result=@routes.detect{|route| method_match(route) && @url.to_s.match(route[:path_info]) } !!result end
negative_failure_message()
click to toggle source
# File lib/lolita/test/matchers.rb, line 21 def negative_failure_message "expected #{@url.inspect}#{@method ? " with method #{@method.inspect}" : ""} to not be routable" end
Private Instance Methods
all_applications()
click to toggle source
# File lib/lolita/test/matchers.rb, line 60 def all_applications if defined?(Rails) && defined?(Rails::Application) ObjectSpace.each_object(Rails::Application).select { |klass| klass.class < Rails::Application }.map(&:class) else [] end end
collect_routes()
click to toggle source
# File lib/lolita/test/matchers.rb, line 53 def collect_routes @routes=[] all_applications.each do |application| @routes+=application.routes.routes.map(&:conditions) end end
method_match(route)
click to toggle source
# File lib/lolita/test/matchers.rb, line 27 def method_match(route) if route[:request_method] if @method @method.to_s.upcase.match(route[:request_method]) else false end else true end end
set_method_and_url()
click to toggle source
# File lib/lolita/test/matchers.rb, line 39 def set_method_and_url if @actual.is_a?(Hash) @method,@url=@actual.keys.first,@actual.values.first elsif @actual.is_a?(Array) if @actual.size>=2 @method,@url=@actual[0],@actual[1] elsif @url=@actual.first end else @url=@actual.to_s end end