From bfcdd46614407d6bf1c955aad6ed4aa3094d2189 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 13 Feb 2019 08:49:05 -0800 Subject: Cached collections only work if there is one template Cached collections only work if there is one template. If there are more than one templates, the caching mechanism doesn't have a key. --- actionview/test/template/render_test.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'actionview/test') diff --git a/actionview/test/template/render_test.rb b/actionview/test/template/render_test.rb index 3f298d81f3..e6e80bc1b8 100644 --- a/actionview/test/template/render_test.rb +++ b/actionview/test/template/render_test.rb @@ -752,6 +752,17 @@ class CachedCollectionViewRenderTest < ActiveSupport::TestCase @view.render(partial: "test/cached_customer", collection: [customer], cached: true) end + test "collection caching does not work on multi-partials" do + a = Object.new + b = Object.new + def a.to_partial_path; "test/partial_iteration_1"; end + def b.to_partial_path; "test/partial_iteration_2"; end + + assert_raises(NotImplementedError) do + @controller_view.render(partial: [a, b], cached: true) + end + end + private def cache_key(*names, virtual_path) digest = ActionView::Digestor.digest name: virtual_path, finder: @view.lookup_context, dependencies: [] -- cgit v1.2.3