diff options
author | José Valim <jose.valim@plataformatec.com.br> | 2013-09-20 13:23:36 -0700 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2013-09-20 13:23:36 -0700 |
commit | eb1cacf77e8ea72f73229caa9c4014d7cad15c3c (patch) | |
tree | 002618fe5aec70bc8d9fd12c2de62f1f55303f92 /actionview/test | |
parent | 34088572270a1dd5a2164b6aa5fc3642cb0479cb (diff) | |
parent | 77e79ecd92acd43a282566e5d297b8e74dc14f05 (diff) | |
download | rails-eb1cacf77e8ea72f73229caa9c4014d7cad15c3c.tar.gz rails-eb1cacf77e8ea72f73229caa9c4014d7cad15c3c.tar.bz2 rails-eb1cacf77e8ea72f73229caa9c4014d7cad15c3c.zip |
Merge pull request #11452 from dasch/dasch/details-in-digestor-cache-key
Bust the template digest cache key when details are changed
Diffstat (limited to 'actionview/test')
-rw-r--r-- | actionview/test/template/digestor_test.rb | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/actionview/test/template/digestor_test.rb b/actionview/test/template/digestor_test.rb index c6608e214a..0f6b14a57d 100644 --- a/actionview/test/template/digestor_test.rb +++ b/actionview/test/template/digestor_test.rb @@ -15,6 +15,16 @@ end class FixtureFinder FIXTURES_DIR = "#{File.dirname(__FILE__)}/../fixtures/digestor" + attr_reader :details + + def initialize + @details = {} + end + + def details_key + details.hash + end + def find(logical_name, keys, partial, options) FixtureTemplate.new("digestor/#{partial ? logical_name.gsub(%r|/([^/]+)$|, '/_\1') : logical_name}.#{options[:formats].first}.erb") end @@ -140,6 +150,20 @@ class TemplateDigestorTest < ActionView::TestCase end end + def test_details_are_included_in_cache_key + # Cache the template digest. + old_digest = digest("events/_event") + + # Change the template; the cached digest remains unchanged. + change_template("events/_event") + + # The details are changed, so a new cache key is generated. + finder.details[:foo] = "bar" + + # The cache is busted. + assert_not_equal old_digest, digest("events/_event") + end + def test_extra_whitespace_in_render_partial assert_digest_difference("messages/edit") do change_template("messages/_form") @@ -220,7 +244,11 @@ class TemplateDigestorTest < ActionView::TestCase end def digest(template_name, options={}) - ActionView::Digestor.digest(template_name, :html, FixtureFinder.new, options) + ActionView::Digestor.digest(template_name, :html, finder, options) + end + + def finder + @finder ||= FixtureFinder.new end def change_template(template_name) |