diff --git a/CHANGELOG.md b/CHANGELOG.md index b6a852b0..cd8b567d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ Features: relationship-level links and meta attributes. (@beauby) - [#1340](https://github.com/rails-api/active_model_serializers/pull/1340) Add support for resource-level meta. (@beauby) Fixes: +- [#1477](https://github.com/rails-api/active_model_serializers/pull/1477) Fix `fragment_cached?` + method to check if caching (@bdmac) - [#1501](https://github.com/rails-api/active_model_serializers/pull/1501) Adds tests for SerializableResource::use_adapter?,doc typos (@domitian) - [#1488](https://github.com/rails-api/active_model_serializers/pull/1488) Require ActiveSupport's string inflections (@nate00) Misc: diff --git a/test/serializers/cached_serializer_test.rb b/test/serializers/cached_serializer_test.rb new file mode 100644 index 00000000..6f31f9e2 --- /dev/null +++ b/test/serializers/cached_serializer_test.rb @@ -0,0 +1,82 @@ +require 'test_helper' +module ActiveModel + class Serializer + module Adapter + class CachedSerializerTest < ActiveSupport::TestCase + def test_cached_false_without_cache_store + cached_serializer = build do |serializer| + serializer._cache = nil + end + refute cached_serializer.cached? + end + + def test_cached_true_with_cache_store_and_without_cache_only_and_cache_except + cached_serializer = build do |serializer| + serializer._cache = Object + end + assert cached_serializer.cached? + end + + def test_cached_false_with_cache_store_and_with_cache_only + cached_serializer = build do |serializer| + serializer._cache = Object + serializer._cache_only = [:name] + end + refute cached_serializer.cached? + end + + def test_cached_false_with_cache_store_and_with_cache_except + cached_serializer = build do |serializer| + serializer._cache = Object + serializer._cache_except = [:content] + end + refute cached_serializer.cached? + end + + def test_fragment_cached_false_without_cache_store + cached_serializer = build do |serializer| + serializer._cache = nil + serializer._cache_only = [:name] + end + refute cached_serializer.fragment_cached? + end + + def test_fragment_cached_true_with_cache_store_and_cache_only + cached_serializer = build do |serializer| + serializer._cache = Object + serializer._cache_only = [:name] + end + assert cached_serializer.fragment_cached? + end + + def test_fragment_cached_true_with_cache_store_and_cache_except + cached_serializer = build do |serializer| + serializer._cache = Object + serializer._cache_except = [:content] + end + assert cached_serializer.fragment_cached? + end + + def test_fragment_cached_false_with_cache_store_and_cache_except_and_cache_only + cached_serializer = build do |serializer| + serializer._cache = Object + serializer._cache_except = [:content] + serializer._cache_only = [:name] + end + refute cached_serializer.fragment_cached? + end + + private + + def build + serializer = Class.new(ActiveModel::Serializer) + serializer._cache_key = nil + serializer._cache_options = nil + yield serializer if block_given? + serializer_instance = serializer.new(Object) + ActiveModel::Serializer::Adapter::CachedSerializer.new(serializer_instance) + end + end + end + end +end