instance method
assert_generates
Ruby on Rails 5.2.8.1
Since v3.0.20Signature
assert_generates(expected_path, options, defaults = {}, extras = {}, message = nil)
Asserts that the provided options can be used to generate the provided path. This is the inverse of assert_recognizes. The extras parameter is used to tell the request the names and values of additional request parameters that would be in a query string. The message parameter allows you to specify a custom error message for assertion failures.
The defaults parameter is unused.
# Asserts that the default action is generated for a route with no action assert_generates "/items", controller: "items", action: "index" # Tests that the list action is properly routed assert_generates "/items/list", controller: "items", action: "list" # Tests the generation of a route with a parameter assert_generates "/items/list/1", { controller: "items", action: "list", id: "1" } # Asserts that the generated route gives us our custom route assert_generates "changesets/12", { controller: 'scm', action: 'show_diff', revision: "12" }
Parameters
-
expected_pathreq -
optionsreq -
defaultsopt = {} -
extrasopt = {} -
messageopt = nil
Source
# File actionpack/lib/action_dispatch/testing/assertions/routing.rb, line 80
def assert_generates(expected_path, options, defaults = {}, extras = {}, message = nil)
if expected_path =~ %r{://}
fail_on(URI::InvalidURIError, message) do
uri = URI.parse(expected_path)
expected_path = uri.path.to_s.empty? ? "/" : uri.path
end
else
expected_path = "/#{expected_path}" unless expected_path.first == "/"
end
# Load routes.rb if it hasn't been loaded.
options = options.clone
generated_path, query_string_keys = @routes.generate_extras(options, defaults)
found_extras = options.reject { |k, _| ! query_string_keys.include? k }
msg = message || sprintf("found extras <%s>, not <%s>", found_extras, extras)
assert_equal(extras, found_extras, msg)
msg = message || sprintf("The generated path <%s> did not match <%s>", generated_path,
expected_path)
assert_equal(expected_path, generated_path, msg)
end
Defined in actionpack/lib/action_dispatch/testing/assertions/routing.rb line 80
· View on GitHub
· Improve this page
· Find usages on GitHub