@@ -446,15 +446,39 @@ def test_a_serializer_rendered_by_two_adapter_returns_differently_fetch_attribut
446446 # rubocop:enable Metrics/AbcSize
447447
448448 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
449460 render_object_with_cache ( @blog )
450461 file_digest = Digest ::SHA1 . hexdigest ( File . open ( __FILE__ ) . read )
451462 key = "#{ @blog . cache_key } /#{ adapter . cache_key } /#{ file_digest } "
452463 assert_equal ( @blog_serializer . attributes , cache_store . fetch ( key ) )
464+ ensure
465+ ActiveModelSerializers . config . use_sha1_digests = previous_use_sha1_digests
453466 end
454467
455468 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
456478 file_digest = Digest ::SHA1 . hexdigest ( File . open ( __FILE__ ) . read )
457479 assert_equal ( file_digest , @post_serializer . class . _cache_digest )
480+ ensure
481+ ActiveModelSerializers . config . use_sha1_digests = previous_use_sha1_digests
458482 end
459483
460484 def test_object_cache_keys
@@ -560,7 +584,7 @@ def test_digest_caller_file
560584 path = file . path
561585 caller_line = "#{ path } :1:in `<top (required)>'"
562586 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 )
564588 ensure
565589 file . unlink
566590 FileUtils . remove_entry dir
@@ -715,5 +739,10 @@ def render_object_with_cache(obj, options = {})
715739 def adapter
716740 @serializable_resource . adapter
717741 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
718747 end
719748end
0 commit comments