@@ -446,15 +446,39 @@ def test_a_serializer_rendered_by_two_adapter_returns_differently_fetch_attribut
446
446
# rubocop:enable Metrics/AbcSize
447
447
448
448
def test_uses_file_digest_in_cache_key
449
+ reset_cache_digest ( @blog_serializer )
450
+ render_object_with_cache ( @blog )
451
+ file_digest = Digest ::MD5 . hexdigest ( File . open ( __FILE__ ) . read )
452
+ key = "#{ @blog . cache_key } /#{ adapter . cache_key } /#{ file_digest } "
453
+ assert_equal ( @blog_serializer . attributes , cache_store . fetch ( key ) )
454
+ end
455
+
456
+ def test_uses_sha1_digest_in_cache_key_when_configured
457
+ reset_cache_digest ( @blog_serializer )
458
+ previous_use_sha1_digests = ActiveModelSerializers . config . use_sha1_digests
459
+ ActiveModelSerializers . config . use_sha1_digests = true
449
460
render_object_with_cache ( @blog )
450
461
file_digest = Digest ::SHA1 . hexdigest ( File . open ( __FILE__ ) . read )
451
462
key = "#{ @blog . cache_key } /#{ adapter . cache_key } /#{ file_digest } "
452
463
assert_equal ( @blog_serializer . attributes , cache_store . fetch ( key ) )
464
+ ensure
465
+ ActiveModelSerializers . config . use_sha1_digests = previous_use_sha1_digests
453
466
end
454
467
455
468
def test_cache_digest_definition
469
+ reset_cache_digest ( @post_serializer )
470
+ file_digest = Digest ::MD5 . hexdigest ( File . open ( __FILE__ ) . read )
471
+ assert_equal ( file_digest , @post_serializer . class . _cache_digest )
472
+ end
473
+
474
+ def test_cache_sha1_digest_definition
475
+ reset_cache_digest ( @post_serializer )
476
+ previous_use_sha1_digests = ActiveModelSerializers . config . use_sha1_digests
477
+ ActiveModelSerializers . config . use_sha1_digests = true
456
478
file_digest = Digest ::SHA1 . hexdigest ( File . open ( __FILE__ ) . read )
457
479
assert_equal ( file_digest , @post_serializer . class . _cache_digest )
480
+ ensure
481
+ ActiveModelSerializers . config . use_sha1_digests = previous_use_sha1_digests
458
482
end
459
483
460
484
def test_object_cache_keys
@@ -560,7 +584,7 @@ def test_digest_caller_file
560
584
path = file . path
561
585
caller_line = "#{ path } :1:in `<top (required)>'"
562
586
file . close
563
- assert_equal ActiveModel ::Serializer . digest_caller_file ( caller_line ) , Digest ::SHA1 . hexdigest ( contents )
587
+ assert_equal ActiveModel ::Serializer . digest_caller_file ( caller_line ) , Digest ::MD5 . hexdigest ( contents )
564
588
ensure
565
589
file . unlink
566
590
FileUtils . remove_entry dir
@@ -715,5 +739,10 @@ def render_object_with_cache(obj, options = {})
715
739
def adapter
716
740
@serializable_resource . adapter
717
741
end
742
+
743
+ def reset_cache_digest ( serializer )
744
+ return unless serializer . class . instance_variable_defined? ( :@_cache_digest )
745
+ serializer . class . remove_instance_variable ( :@_cache_digest )
746
+ end
718
747
end
719
748
end
0 commit comments