11require 'test_helper'
22
33module ActiveModelSerializers
4- class ModelTest < ActiveSupport ::TestCase
5- include ActiveModel ::Serializer ::Lint ::Tests
4+ class CachingModelTest < ActiveSupport ::TestCase
5+ include ActiveModel ::Serializer ::Lint ::CacheTests
6+ class TestModel < ActiveModelSerializers ::Model ; end
7+
8+ setup do
9+ @resource = TestModel . new
10+ end
11+ end
12+
13+ class BasicModelTest < ActiveSupport ::TestCase
14+ include ActiveModel ::Serializer ::Lint ::SerializationTests
615
716 setup do
817 @resource = ActiveModelSerializers ::Model . new
918 end
1019
1120 def test_initialization_with_string_keys
12- klass = Class . new ( ActiveModelSerializers :: Model ) do
21+ klass = subclass_without_caching_support do
1322 attributes :key
1423 end
1524 value = 'value'
@@ -20,32 +29,31 @@ def test_initialization_with_string_keys
2029 end
2130
2231 def test_attributes_can_be_read_for_serialization
23- klass = Class . new ( ActiveModelSerializers :: Model ) do
32+ klass = subclass_without_caching_support do
2433 attributes :one , :two , :three
2534 end
2635 original_attributes = { one : 1 , two : 2 , three : 3 }
2736 instance = klass . new ( original_attributes )
2837
2938 # Initial value
30- expected_attributes = { id : nil , one : 1 , two : 2 , three : 3 } . with_indifferent_access
39+ expected_attributes = { one : 1 , two : 2 , three : 3 } . with_indifferent_access
3140 assert_equal expected_attributes , instance . attributes
3241 assert_equal 1 , instance . one
3342 assert_equal 1 , instance . read_attribute_for_serialization ( :one )
3443
3544 # Change via accessor
3645 instance . one = :not_one
3746
38- expected_attributes = { id : nil , one : :not_one , two : 2 , three : 3 } . with_indifferent_access
47+ expected_attributes = { one : :not_one , two : 2 , three : 3 } . with_indifferent_access
3948 assert_equal expected_attributes , instance . attributes
4049 assert_equal :not_one , instance . one
4150 assert_equal :not_one , instance . read_attribute_for_serialization ( :one )
4251 end
4352
4453 def test_id_attribute_can_be_read_for_serialization
45- klass = Class . new ( ActiveModelSerializers :: Model ) do
54+ klass = subclass_without_caching_support do
4655 attributes :id , :one , :two , :three
4756 end
48- self . class . const_set ( :SomeTestModel , klass )
4957 original_attributes = { id : :ego , one : 1 , two : 2 , three : 3 }
5058 instance = klass . new ( original_attributes )
5159
@@ -62,8 +70,16 @@ def test_id_attribute_can_be_read_for_serialization
6270 assert_equal expected_attributes , instance . attributes
6371 assert_equal :superego , instance . id
6472 assert_equal :superego , instance . read_attribute_for_serialization ( :id )
73+ end
74+
75+ def subclass_without_caching_support ( &block )
76+ original_caching_support = ActiveModelSerializers ::Model . add_caching_support
77+ ActiveModelSerializers ::Model . add_caching_support = false
78+ Class . new ( ActiveModelSerializers ::Model ) do
79+ instance_exec ( &block )
80+ end
6581 ensure
66- self . class . send ( :remove_const , :SomeTestModel )
82+ ActiveModelSerializers :: Model . add_caching_support = original_caching_support
6783 end
6884 end
6985end
0 commit comments