0
@@ -161,33 +161,50 @@ module Test #:nodoc:
0
# -- routing assertions --------------------------------------------------
0
# Asserts that the routing of the given path is handled correctly and that the parsed options match.
0
- # Also verifies that the provided options can be used to generate the provided path.
0
- def assert_routing(path, options, defaults={}, extras={}, message=nil)
0
- defaults[:controller] ||= options[:controller] # Assume given controller,
0
+ def assert_recognizes(expected_options, path, extras={}, message=nil)
0
+ # Load routes.rb if it hasn't been loaded.
0
+ ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
0
+ # Assume given controller
0
request = ActionController::TestRequest.new({}, {}, nil)
0
- request.path_parameters = defaults.clone
0
+ ActionController::Routing::Routes.recognize!(request)
0
+ expected_options = expected_options.clone
0
+ extras.each_key { |key| expected_options.delete key } unless extras.nil?
0
- ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty? # Load routes.rb if it hasn't been loaded.
0
+ msg = build_message(message, "The recognized options <?> did not match <?>",
0
+ request.path_parameters, expected_options)
0
+ assert_block(msg) { request.path_parameters == expected_options }
0
+ # Asserts that the provided options can be used to generate the provided path.
0
+ def assert_generates(expected_path, options, defaults={}, extras = {}, message=nil)
0
+ # Load routes.rb if it hasn't been loaded.
0
+ ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
0
+ # Assume given controller
0
+ request = ActionController::TestRequest.new({}, {}, nil)
0
+ request.path_parameters = (defaults or {}).clone
0
+ request.path_parameters[:controller] ||= options[:controller]
0
generated_path, found_extras = ActionController::Routing::Routes.generate(options, request)
0
generated_path = generated_path.join('/')
0
msg = build_message(message, "found extras <?>, not <?>", found_extras, extras)
0
assert_block(msg) { found_extras == extras }
0
- msg = build_message(message, "The generated path <?> did not match <?>", generated_path, path)
0
- assert_block(msg) { path == generated_path }
0
- request = ActionController::TestRequest.new({}, {}, nil)
0
- ActionController::Routing::Routes.recognize!(request)
0
- expected_options = options.clone
0
- extras.each {|k,v| expected_options.delete k}
0
- msg = build_message(message, "The recognized options <?> did not match <?>", request.path_parameters, expected_options)
0
- assert_block(msg) { request.path_parameters == expected_options }
0
+ msg = build_message(message, "The generated path <?> did not match <?>", generated_path,
0
+ assert_block(msg) { expected_path == generated_path }
0
+ # asserts that path and options match both ways, in other words, the URL generated from
0
+ # options is same as path, and also that the options recognized from path are same as options
0
+ def assert_routing(path, options, defaults={}, extras={}, message=nil)
0
+ assert_recognizes(options, path, extras, message)
0
+ assert_generates(path, options, defaults, extras, message)
0
# -- template assertions ------------------------------------------------
0
# ensure that a template object with the given name exists
Comments
No one has commented yet.