mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
add specs for cached attributes
This commit is contained in:
parent
ab502f0c52
commit
b2dc2598fb
@ -35,6 +35,42 @@ class CachingTest < ActiveModel::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
class Parent
|
||||
def id
|
||||
'parent1'
|
||||
end
|
||||
|
||||
def name
|
||||
'Kieran'
|
||||
end
|
||||
|
||||
def children
|
||||
[ Child.new ]
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
send name
|
||||
end
|
||||
end
|
||||
|
||||
class Child
|
||||
def id
|
||||
'child1'
|
||||
end
|
||||
|
||||
def name
|
||||
'Joshua'
|
||||
end
|
||||
|
||||
def parent
|
||||
Parent.new
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
send name
|
||||
end
|
||||
end
|
||||
|
||||
def test_serializers_have_a_cache_store
|
||||
ActiveModel::Serializer.cache = NullStore.new
|
||||
|
||||
@ -93,4 +129,49 @@ class CachingTest < ActiveModel::TestCase
|
||||
assert_equal instance.serializable_array, serializer.cache.read('array_serializer/cache-key/serializable-array')
|
||||
assert_equal instance.to_json, serializer.cache.read('array_serializer/cache-key/to-json')
|
||||
end
|
||||
|
||||
def test_cached_serializers_return_associations
|
||||
|
||||
child_serializer = Class.new(ActiveModel::Serializer) do
|
||||
cached true
|
||||
attributes :name
|
||||
|
||||
def self.to_s
|
||||
'child_serializer'
|
||||
end
|
||||
|
||||
def cache_key
|
||||
object.name
|
||||
end
|
||||
end
|
||||
|
||||
parent_serializer = Class.new(ActiveModel::Serializer) do
|
||||
cached true
|
||||
attributes :name
|
||||
|
||||
has_many :children, serializer: child_serializer, embed: :ids, include: true
|
||||
|
||||
def self.to_s
|
||||
'parent_serializer'
|
||||
end
|
||||
|
||||
def cache_key
|
||||
object.name
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
parent_serializer.cache = NullStore.new
|
||||
child_serializer.cache = NullStore.new
|
||||
|
||||
instance = parent_serializer.new Parent.new, root: :parent
|
||||
|
||||
initial_keys = instance.as_json.keys
|
||||
|
||||
assert_equal(initial_keys, [:children, :parent])
|
||||
|
||||
cached_keys = instance.as_json.keys
|
||||
|
||||
assert_equal(cached_keys, [:children, :parent])
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user