diff options
author | st0012 <stan001212@gmail.com> | 2019-02-03 22:06:38 +0800 |
---|---|---|
committer | st0012 <stan001212@gmail.com> | 2019-04-04 09:59:06 +0800 |
commit | e8688ddb33347eb9de078843a75a075b70cc9f04 (patch) | |
tree | 8bf3464a59d468044dd540fbbae1ddde8e09124f /actionview/test/template | |
parent | 2c44e22942cdf8e93a72084db2773f088b4ad486 (diff) | |
download | rails-e8688ddb33347eb9de078843a75a075b70cc9f04.tar.gz rails-e8688ddb33347eb9de078843a75a075b70cc9f04.tar.bz2 rails-e8688ddb33347eb9de078843a75a075b70cc9f04.zip |
Fix partial caching ignore repeated items issue
This is because we only use hash to maintain the result. So when the key
are the same, the result would be skipped. The solution is to maintain
an array for tracking every item's position to restructure the result.
Diffstat (limited to 'actionview/test/template')
-rw-r--r-- | actionview/test/template/render_test.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/actionview/test/template/render_test.rb b/actionview/test/template/render_test.rb index 15c41051de..f0b5d7d95e 100644 --- a/actionview/test/template/render_test.rb +++ b/actionview/test/template/render_test.rb @@ -811,6 +811,28 @@ class CachedCollectionViewRenderTest < ActiveSupport::TestCase end end + test "collection caching with repeated collection" do + sets = [ + [1, 2, 3, 4, 5], + [1, 2, 3, 4, 4], + [1, 2, 3, 4, 5], + [1, 2, 3, 4, 4], + [1, 2, 3, 4, 6] + ] + + result = @view.render(partial: "test/cached_set", collection: sets, cached: true) + + splited_result = result.split("\n") + assert_equal 5, splited_result.count + assert_equal [ + "1 | 2 | 3 | 4 | 5", + "1 | 2 | 3 | 4 | 4", + "1 | 2 | 3 | 4 | 5", + "1 | 2 | 3 | 4 | 4", + "1 | 2 | 3 | 4 | 6" + ], splited_result + end + private def cache_key(*names, virtual_path) digest = ActionView::Digestor.digest name: virtual_path, format: :html, finder: @view.lookup_context, dependencies: [] |