add specs for cached attributes

This commit is contained in:
Kieran Huggins 2015-10-16 16:42:30 -04:00
parent ab502f0c52
commit b2dc2598fb

View File

@ -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