aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorGrant Hutchins <nertzy@gmail.com>2012-03-10 19:25:12 -0500
committerGrant Hutchins <nertzy@gmail.com>2012-03-10 19:25:12 -0500
commitb142bd84d83b222fca393355cdd76416648e5625 (patch)
tree51c7eb391730286eaf878c0bd5f641c8b431a7e9 /actionpack/lib/action_controller
parentd5d241cb2c696f13e2c16efca0d24565a6e1c0a5 (diff)
downloadrails-b142bd84d83b222fca393355cdd76416648e5625.tar.gz
rails-b142bd84d83b222fca393355cdd76416648e5625.tar.bz2
rails-b142bd84d83b222fca393355cdd76416648e5625.zip
assert_template matches against Regexp
This allows for more strict template assertions, while maintaining backward compatibility. For example, if you use assert_template("foo/bar") and "foo/bar/baz" was rendered, the test passes. But if you use assert_template(%r{\Afoo/bar\Z}), you will catch that a different template was rendered. Also, if you passed an unsupported argument to assert_template() in the past, it would silently succeed. Now it raises an ArgumentError.
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/test_case.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index e9a3ec5a22..7af30ed690 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -56,6 +56,9 @@ module ActionController
# # assert that the "new" view template was rendered
# assert_template "new"
#
+ # # assert that the exact template "admin/posts/new" was rendered
+ # assert_template %r{\Aadmin/posts/new\Z}
+ #
# # assert that the "_customer" partial was rendered twice
# assert_template :partial => '_customer', :count => 2
#
@@ -74,11 +77,11 @@ module ActionController
response.body
case options
- when NilClass, String, Symbol
+ when NilClass, String, Symbol, Regexp
options = options.to_s if Symbol === options
rendered = @templates
msg = message || sprintf("expecting <%s> but rendering with <%s>",
- options, rendered.keys)
+ options.inspect, rendered.keys)
assert_block(msg) do
if options
rendered.any? { |t,num| t.match(options) }
@@ -121,6 +124,8 @@ module ActionController
assert @partials.empty?,
"Expected no partials to be rendered"
end
+ else
+ raise ArgumentError, "assert_template only accepts a String, Symbol, Hash, Regexp, or nil"
end
end
end