diff options
author | Richard Schneeman <richard.schneeman+no-recruiters@gmail.com> | 2018-10-05 21:30:49 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-05 21:30:49 -0500 |
commit | 4ad7bbf1d298ea458ced6b10222566b5934b8c3e (patch) | |
tree | c064b8006c5572ea1e72673d00232b88ae46e1c7 /activesupport/test | |
parent | 0ece3911cc325640ff83e3bcea7eda38a4847470 (diff) | |
parent | d5b57c890e2d0d7e42d726fb5a16a0ab30da67ea (diff) | |
download | rails-4ad7bbf1d298ea458ced6b10222566b5934b8c3e.tar.gz rails-4ad7bbf1d298ea458ced6b10222566b5934b8c3e.tar.bz2 rails-4ad7bbf1d298ea458ced6b10222566b5934b8c3e.zip |
Merge pull request #34005 from tgturner/expand-cache-key-bug-fix
Array with single item correctly uses cache_key
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/cache/behaviors/cache_store_behavior.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/activesupport/test/cache/behaviors/cache_store_behavior.rb b/activesupport/test/cache/behaviors/cache_store_behavior.rb index 30735eb0eb..9f54b1e7de 100644 --- a/activesupport/test/cache/behaviors/cache_store_behavior.rb +++ b/activesupport/test/cache/behaviors/cache_store_behavior.rb @@ -290,6 +290,55 @@ module CacheStoreBehavior assert_equal "bar", @cache.read("fu/foo") end + InstanceTest = Struct.new(:name, :id) do + def cache_key + "#{name}/#{id}" + end + + def to_param + "hello" + end + end + + def test_array_with_single_instance_as_cache_key_uses_cache_key_method + test_instance_one = InstanceTest.new("test", 1) + test_instance_two = InstanceTest.new("test", 2) + + @cache.write([test_instance_one], "one") + @cache.write([test_instance_two], "two") + + assert_equal "one", @cache.read([test_instance_one]) + assert_equal "two", @cache.read([test_instance_two]) + end + + def test_array_with_multiple_instances_as_cache_key_uses_cache_key_method + test_instance_one = InstanceTest.new("test", 1) + test_instance_two = InstanceTest.new("test", 2) + test_instance_three = InstanceTest.new("test", 3) + + @cache.write([test_instance_one, test_instance_three], "one") + @cache.write([test_instance_two, test_instance_three], "two") + + assert_equal "one", @cache.read([test_instance_one, test_instance_three]) + assert_equal "two", @cache.read([test_instance_two, test_instance_three]) + end + + def test_format_of_expanded_key_for_single_instance + test_instance_one = InstanceTest.new("test", 1) + + expanded_key = @cache.send(:expanded_key, test_instance_one) + + assert_equal expanded_key, test_instance_one.cache_key + end + + def test_format_of_expanded_key_for_single_instance_in_array + test_instance_one = InstanceTest.new("test", 1) + + expanded_key = @cache.send(:expanded_key, [test_instance_one]) + + assert_equal expanded_key, test_instance_one.cache_key + end + def test_hash_as_cache_key @cache.write({ foo: 1, fu: 2 }, "bar") assert_equal "bar", @cache.read("foo=1/fu=2") |