Skip to content

Commit

Permalink
Merge branch 'CheckMateIO-bugfix/fagment-caching-breaks-type-setting'
Browse files Browse the repository at this point in the history
Squashed commits that were done in other PR

Follow up needs:
- Changelog
  • Loading branch information
bf4 committed Feb 10, 2016
2 parents 2789cc5 + d67f7da commit a409982
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
4 changes: 4 additions & 0 deletions lib/active_model/serializer/adapter/fragment_cache.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ def fragment_serializer(name, klass)

cached.constantize.cache(klass._cache_options)

# Preserve the type setting in the cached/non-cached serializer classes
cached.constantize.type(klass._type)
non_cached.constantize.type(klass._type)

cached.constantize.fragmented(serializer)
non_cached.constantize.fragmented(serializer)

Expand Down
14 changes: 13 additions & 1 deletion test/adapter/fragment_cache_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ module ActiveModel
class Serializer
module Adapter
class FragmentCacheTest < ActiveSupport::TestCase
TypedRoleSerializer = Class.new(ActiveModel::Serializer) do
type 'my-roles'
cache only: [:name], skip_digest: true
attributes :id, :name, :description

belongs_to :author
end

def setup
super
@spam = Spam::UnrelatedLink.new(id: 'spam-id-1')
Expand Down Expand Up @@ -31,8 +39,12 @@ def test_fragment_fetch_with_namespaced_object
}
assert_equal(@spam_hash.fetch, expected_result)
end

def test_fragment_fetch_with_type_override
serialization = serializable(Role.new(name: 'Another Author'), serializer: TypedRoleSerializer, adapter: :json_api).serializable_hash
assert_equal(TypedRoleSerializer._type, serialization.fetch(:data).fetch(:type))
end
end
end
end
end

0 comments on commit a409982

Please sign in to comment.