diff options
author | Graham Turner <turnertgraham@gmail.com> | 2018-09-27 14:58:29 -0400 |
---|---|---|
committer | Graham Turner <turnertgraham@gmail.com> | 2018-10-05 19:24:49 -0400 |
commit | d5b57c890e2d0d7e42d726fb5a16a0ab30da67ea (patch) | |
tree | c064b8006c5572ea1e72673d00232b88ae46e1c7 /activesupport/test/cache | |
parent | 0ece3911cc325640ff83e3bcea7eda38a4847470 (diff) | |
download | rails-d5b57c890e2d0d7e42d726fb5a16a0ab30da67ea.tar.gz rails-d5b57c890e2d0d7e42d726fb5a16a0ab30da67ea.tar.bz2 rails-d5b57c890e2d0d7e42d726fb5a16a0ab30da67ea.zip |
Array with single item correctly uses cache_key
Diffstat (limited to 'activesupport/test/cache')
-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") |