active_model_serializers 0.10.7 → 0.10.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +62 -1
  3. data/README.md +20 -20
  4. data/lib/action_controller/serialization.rb +11 -1
  5. data/lib/active_model/serializable_resource.rb +2 -0
  6. data/lib/active_model/serializer.rb +33 -18
  7. data/lib/active_model/serializer/adapter.rb +2 -0
  8. data/lib/active_model/serializer/adapter/attributes.rb +2 -0
  9. data/lib/active_model/serializer/adapter/base.rb +2 -0
  10. data/lib/active_model/serializer/adapter/json.rb +2 -0
  11. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  12. data/lib/active_model/serializer/adapter/null.rb +2 -0
  13. data/lib/active_model/serializer/array_serializer.rb +2 -0
  14. data/lib/active_model/serializer/association.rb +2 -0
  15. data/lib/active_model/serializer/attribute.rb +2 -0
  16. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  17. data/lib/active_model/serializer/collection_serializer.rb +6 -6
  18. data/lib/active_model/serializer/concerns/caching.rb +7 -2
  19. data/lib/active_model/serializer/error_serializer.rb +2 -0
  20. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  21. data/lib/active_model/serializer/field.rb +2 -0
  22. data/lib/active_model/serializer/fieldset.rb +3 -1
  23. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  24. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  25. data/lib/active_model/serializer/lazy_association.rb +6 -2
  26. data/lib/active_model/serializer/link.rb +23 -0
  27. data/lib/active_model/serializer/lint.rb +2 -0
  28. data/lib/active_model/serializer/null.rb +2 -0
  29. data/lib/active_model/serializer/reflection.rb +9 -4
  30. data/lib/active_model/serializer/version.rb +3 -1
  31. data/lib/active_model_serializers.rb +20 -10
  32. data/lib/active_model_serializers/adapter.rb +3 -1
  33. data/lib/active_model_serializers/adapter/attributes.rb +23 -0
  34. data/lib/active_model_serializers/adapter/base.rb +2 -0
  35. data/lib/active_model_serializers/adapter/json.rb +2 -0
  36. data/lib/active_model_serializers/adapter/json_api.rb +14 -9
  37. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +2 -0
  38. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  40. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  41. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  42. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +2 -0
  43. data/lib/active_model_serializers/adapter/json_api/relationship.rb +2 -0
  44. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +3 -1
  45. data/lib/active_model_serializers/adapter/null.rb +2 -0
  46. data/lib/active_model_serializers/callbacks.rb +2 -0
  47. data/lib/active_model_serializers/deprecate.rb +2 -0
  48. data/lib/active_model_serializers/deserialization.rb +2 -0
  49. data/lib/active_model_serializers/json_pointer.rb +2 -0
  50. data/lib/active_model_serializers/logging.rb +2 -0
  51. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  52. data/lib/active_model_serializers/model.rb +2 -0
  53. data/lib/active_model_serializers/model/caching.rb +25 -0
  54. data/lib/active_model_serializers/railtie.rb +4 -0
  55. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  56. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  57. data/lib/active_model_serializers/serialization_context.rb +2 -0
  58. data/lib/active_model_serializers/test.rb +2 -0
  59. data/lib/active_model_serializers/test/schema.rb +2 -0
  60. data/lib/active_model_serializers/test/serializer.rb +2 -0
  61. data/lib/generators/rails/resource_override.rb +2 -0
  62. data/lib/generators/rails/serializer_generator.rb +2 -0
  63. data/lib/grape/active_model_serializers.rb +2 -0
  64. data/lib/grape/formatters/active_model_serializers.rb +2 -0
  65. data/lib/grape/helpers/active_model_serializers.rb +2 -0
  66. data/lib/tasks/rubocop.rake +2 -0
  67. metadata +70 -295
  68. data/.github/ISSUE_TEMPLATE.md +0 -29
  69. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  70. data/.gitignore +0 -35
  71. data/.rubocop.yml +0 -105
  72. data/.simplecov +0 -110
  73. data/.travis.yml +0 -52
  74. data/CODE_OF_CONDUCT.md +0 -74
  75. data/CONTRIBUTING.md +0 -105
  76. data/Gemfile +0 -72
  77. data/Rakefile +0 -74
  78. data/active_model_serializers.gemspec +0 -63
  79. data/appveyor.yml +0 -28
  80. data/bin/bench +0 -171
  81. data/bin/bench_regression +0 -316
  82. data/bin/rubocop +0 -38
  83. data/bin/serve_benchmark +0 -39
  84. data/docs/README.md +0 -41
  85. data/docs/STYLE.md +0 -58
  86. data/docs/general/adapters.md +0 -269
  87. data/docs/general/caching.md +0 -58
  88. data/docs/general/configuration_options.md +0 -185
  89. data/docs/general/deserialization.md +0 -100
  90. data/docs/general/fields.md +0 -31
  91. data/docs/general/getting_started.md +0 -133
  92. data/docs/general/instrumentation.md +0 -40
  93. data/docs/general/key_transforms.md +0 -40
  94. data/docs/general/logging.md +0 -21
  95. data/docs/general/rendering.md +0 -293
  96. data/docs/general/serializers.md +0 -483
  97. data/docs/how-open-source-maintained.jpg +0 -0
  98. data/docs/howto/add_pagination_links.md +0 -138
  99. data/docs/howto/add_relationship_links.md +0 -140
  100. data/docs/howto/add_root_key.md +0 -62
  101. data/docs/howto/grape_integration.md +0 -42
  102. data/docs/howto/outside_controller_use.md +0 -66
  103. data/docs/howto/passing_arbitrary_options.md +0 -27
  104. data/docs/howto/serialize_poro.md +0 -73
  105. data/docs/howto/test.md +0 -154
  106. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  107. data/docs/integrations/ember-and-json-api.md +0 -147
  108. data/docs/integrations/grape.md +0 -19
  109. data/docs/jsonapi/errors.md +0 -56
  110. data/docs/jsonapi/schema.md +0 -151
  111. data/docs/jsonapi/schema/schema.json +0 -366
  112. data/docs/rfcs/0000-namespace.md +0 -106
  113. data/docs/rfcs/template.md +0 -15
  114. data/test/action_controller/adapter_selector_test.rb +0 -62
  115. data/test/action_controller/explicit_serializer_test.rb +0 -135
  116. data/test/action_controller/json/include_test.rb +0 -246
  117. data/test/action_controller/json_api/deserialization_test.rb +0 -112
  118. data/test/action_controller/json_api/errors_test.rb +0 -40
  119. data/test/action_controller/json_api/fields_test.rb +0 -66
  120. data/test/action_controller/json_api/linked_test.rb +0 -202
  121. data/test/action_controller/json_api/pagination_test.rb +0 -124
  122. data/test/action_controller/json_api/transform_test.rb +0 -189
  123. data/test/action_controller/lookup_proc_test.rb +0 -49
  124. data/test/action_controller/namespace_lookup_test.rb +0 -232
  125. data/test/action_controller/serialization_scope_name_test.rb +0 -235
  126. data/test/action_controller/serialization_test.rb +0 -472
  127. data/test/active_model_serializers/adapter_for_test.rb +0 -208
  128. data/test/active_model_serializers/json_pointer_test.rb +0 -22
  129. data/test/active_model_serializers/logging_test.rb +0 -77
  130. data/test/active_model_serializers/model_test.rb +0 -142
  131. data/test/active_model_serializers/railtie_test_isolated.rb +0 -68
  132. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -161
  133. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -71
  134. data/test/active_model_serializers/test/schema_test.rb +0 -131
  135. data/test/active_model_serializers/test/serializer_test.rb +0 -62
  136. data/test/active_record_test.rb +0 -9
  137. data/test/adapter/attributes_test.rb +0 -40
  138. data/test/adapter/deprecation_test.rb +0 -100
  139. data/test/adapter/json/belongs_to_test.rb +0 -45
  140. data/test/adapter/json/collection_test.rb +0 -104
  141. data/test/adapter/json/has_many_test.rb +0 -53
  142. data/test/adapter/json/transform_test.rb +0 -93
  143. data/test/adapter/json_api/belongs_to_test.rb +0 -155
  144. data/test/adapter/json_api/collection_test.rb +0 -96
  145. data/test/adapter/json_api/errors_test.rb +0 -76
  146. data/test/adapter/json_api/fields_test.rb +0 -96
  147. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
  148. data/test/adapter/json_api/has_many_test.rb +0 -173
  149. data/test/adapter/json_api/has_one_test.rb +0 -80
  150. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -213
  151. data/test/adapter/json_api/json_api_test.rb +0 -33
  152. data/test/adapter/json_api/linked_test.rb +0 -413
  153. data/test/adapter/json_api/links_test.rb +0 -95
  154. data/test/adapter/json_api/pagination_links_test.rb +0 -206
  155. data/test/adapter/json_api/parse_test.rb +0 -137
  156. data/test/adapter/json_api/relationship_test.rb +0 -397
  157. data/test/adapter/json_api/resource_meta_test.rb +0 -100
  158. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
  159. data/test/adapter/json_api/transform_test.rb +0 -512
  160. data/test/adapter/json_api/type_test.rb +0 -193
  161. data/test/adapter/json_test.rb +0 -46
  162. data/test/adapter/null_test.rb +0 -22
  163. data/test/adapter/polymorphic_test.rb +0 -218
  164. data/test/adapter_test.rb +0 -67
  165. data/test/array_serializer_test.rb +0 -22
  166. data/test/benchmark/app.rb +0 -65
  167. data/test/benchmark/benchmarking_support.rb +0 -67
  168. data/test/benchmark/bm_active_record.rb +0 -81
  169. data/test/benchmark/bm_adapter.rb +0 -38
  170. data/test/benchmark/bm_caching.rb +0 -119
  171. data/test/benchmark/bm_lookup_chain.rb +0 -83
  172. data/test/benchmark/bm_transform.rb +0 -45
  173. data/test/benchmark/config.ru +0 -3
  174. data/test/benchmark/controllers.rb +0 -83
  175. data/test/benchmark/fixtures.rb +0 -219
  176. data/test/cache_test.rb +0 -651
  177. data/test/collection_serializer_test.rb +0 -127
  178. data/test/fixtures/active_record.rb +0 -113
  179. data/test/fixtures/poro.rb +0 -225
  180. data/test/generators/scaffold_controller_generator_test.rb +0 -24
  181. data/test/generators/serializer_generator_test.rb +0 -75
  182. data/test/grape_test.rb +0 -196
  183. data/test/lint_test.rb +0 -49
  184. data/test/logger_test.rb +0 -20
  185. data/test/poro_test.rb +0 -9
  186. data/test/serializable_resource_test.rb +0 -79
  187. data/test/serializers/association_macros_test.rb +0 -37
  188. data/test/serializers/associations_test.rb +0 -468
  189. data/test/serializers/attribute_test.rb +0 -153
  190. data/test/serializers/attributes_test.rb +0 -52
  191. data/test/serializers/caching_configuration_test_isolated.rb +0 -170
  192. data/test/serializers/configuration_test.rb +0 -32
  193. data/test/serializers/fieldset_test.rb +0 -14
  194. data/test/serializers/meta_test.rb +0 -202
  195. data/test/serializers/options_test.rb +0 -32
  196. data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
  197. data/test/serializers/reflection_test.rb +0 -427
  198. data/test/serializers/root_test.rb +0 -21
  199. data/test/serializers/serialization_test.rb +0 -55
  200. data/test/serializers/serializer_for_test.rb +0 -136
  201. data/test/serializers/serializer_for_with_namespace_test.rb +0 -88
  202. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  203. data/test/support/isolated_unit.rb +0 -84
  204. data/test/support/rails5_shims.rb +0 -53
  205. data/test/support/rails_app.rb +0 -38
  206. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  207. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  208. data/test/support/schemas/custom/show.json +0 -7
  209. data/test/support/schemas/hyper_schema.json +0 -93
  210. data/test/support/schemas/render_using_json_api.json +0 -43
  211. data/test/support/schemas/simple_json_pointers.json +0 -10
  212. data/test/support/serialization_testing.rb +0 -79
  213. data/test/test_helper.rb +0 -70
@@ -1,208 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModelSerializers
4
- class AdapterForTest < ::ActiveSupport::TestCase
5
- UnknownAdapterError = ::ActiveModelSerializers::Adapter::UnknownAdapterError
6
-
7
- def test_serializer_adapter_returns_configured_adapter
8
- assert_output(nil, /ActiveModelSerializers::Adapter.configured_adapter/) do
9
- assert_equal ActiveModelSerializers::Adapter.configured_adapter, ActiveModel::Serializer.adapter
10
- end
11
- end
12
-
13
- def test_returns_default_adapter
14
- with_adapter_config_setup do
15
- adapter = ActiveModelSerializers::Adapter.configured_adapter
16
- assert_equal ActiveModelSerializers::Adapter::Attributes, adapter
17
- end
18
- end
19
-
20
- def test_overwrite_adapter_with_symbol
21
- with_adapter_config_setup do
22
- ActiveModelSerializers.config.adapter = :null
23
-
24
- adapter = ActiveModelSerializers::Adapter.configured_adapter
25
- assert_equal ActiveModelSerializers::Adapter::Null, adapter
26
- end
27
- end
28
-
29
- def test_overwrite_adapter_with_camelcased_symbol
30
- with_adapter_config_setup do
31
- ActiveModelSerializers.config.adapter = :JsonApi
32
-
33
- adapter = ActiveModelSerializers::Adapter.configured_adapter
34
- assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
35
- end
36
- end
37
-
38
- def test_overwrite_adapter_with_string
39
- with_adapter_config_setup do
40
- ActiveModelSerializers.config.adapter = 'json_api'
41
-
42
- adapter = ActiveModelSerializers::Adapter.configured_adapter
43
- assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
44
- end
45
- end
46
-
47
- def test_overwrite_adapter_with_a_camelcased_string
48
- with_adapter_config_setup do
49
- ActiveModelSerializers.config.adapter = 'JsonApi'
50
-
51
- adapter = ActiveModelSerializers::Adapter.configured_adapter
52
- assert_equal ActiveModelSerializers::Adapter::JsonApi, adapter
53
- end
54
- end
55
-
56
- def test_overwrite_adapter_with_class
57
- with_adapter_config_setup do
58
- ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::Null
59
-
60
- adapter = ActiveModelSerializers::Adapter.configured_adapter
61
- assert_equal ActiveModelSerializers::Adapter::Null, adapter
62
- end
63
- end
64
-
65
- def test_raises_exception_if_invalid_symbol_given
66
- with_adapter_config_setup do
67
- ActiveModelSerializers.config.adapter = :unknown
68
-
69
- assert_raises UnknownAdapterError do
70
- ActiveModelSerializers::Adapter.configured_adapter
71
- end
72
- end
73
- end
74
-
75
- def test_raises_exception_if_it_does_not_know_hot_to_infer_adapter
76
- with_adapter_config_setup do
77
- ActiveModelSerializers.config.adapter = 42
78
-
79
- assert_raises UnknownAdapterError do
80
- ActiveModelSerializers::Adapter.configured_adapter
81
- end
82
- end
83
- end
84
-
85
- def test_adapter_class_for_known_adapter
86
- klass = ActiveModelSerializers::Adapter.adapter_class(:json_api)
87
- assert_equal ActiveModelSerializers::Adapter::JsonApi, klass
88
- end
89
-
90
- def test_adapter_class_for_unknown_adapter
91
- assert_raises UnknownAdapterError do
92
- ActiveModelSerializers::Adapter.adapter_class(:json_simple)
93
- end
94
- end
95
-
96
- def test_adapter_map
97
- expected_adapter_map = {
98
- 'null'.freeze => ActiveModelSerializers::Adapter::Null,
99
- 'json'.freeze => ActiveModelSerializers::Adapter::Json,
100
- 'attributes'.freeze => ActiveModelSerializers::Adapter::Attributes,
101
- 'json_api'.freeze => ActiveModelSerializers::Adapter::JsonApi
102
- }
103
- actual = ActiveModelSerializers::Adapter.adapter_map
104
- assert_equal actual, expected_adapter_map
105
- end
106
-
107
- def test_adapters
108
- assert_equal ActiveModelSerializers::Adapter.adapters.sort, [
109
- 'attributes'.freeze,
110
- 'json'.freeze,
111
- 'json_api'.freeze,
112
- 'null'.freeze
113
- ]
114
- end
115
-
116
- def test_lookup_adapter_by_string_name
117
- assert_equal ActiveModelSerializers::Adapter.lookup('json'.freeze), ActiveModelSerializers::Adapter::Json
118
- end
119
-
120
- def test_lookup_adapter_by_symbol_name
121
- assert_equal ActiveModelSerializers::Adapter.lookup(:json), ActiveModelSerializers::Adapter::Json
122
- end
123
-
124
- def test_lookup_adapter_by_class
125
- klass = ActiveModelSerializers::Adapter::Json
126
- assert_equal ActiveModelSerializers::Adapter.lookup(klass), klass
127
- end
128
-
129
- def test_lookup_adapter_from_environment_registers_adapter
130
- ActiveModelSerializers::Adapter.const_set(:AdapterFromEnvironment, Class.new)
131
- klass = ::ActiveModelSerializers::Adapter::AdapterFromEnvironment
132
- name = 'adapter_from_environment'.freeze
133
- assert_equal ActiveModelSerializers::Adapter.lookup(name), klass
134
- assert ActiveModelSerializers::Adapter.adapters.include?(name)
135
- ensure
136
- ActiveModelSerializers::Adapter.adapter_map.delete(name)
137
- ActiveModelSerializers::Adapter.send(:remove_const, :AdapterFromEnvironment)
138
- end
139
-
140
- def test_lookup_adapter_for_unknown_name
141
- assert_raises UnknownAdapterError do
142
- ActiveModelSerializers::Adapter.lookup(:json_simple)
143
- end
144
- end
145
-
146
- def test_adapter
147
- assert_equal ActiveModelSerializers.config.adapter, :attributes
148
- assert_equal ActiveModelSerializers::Adapter.configured_adapter, ActiveModelSerializers::Adapter::Attributes
149
- end
150
-
151
- def test_register_adapter
152
- new_adapter_name = :foo
153
- new_adapter_klass = Class.new
154
- ActiveModelSerializers::Adapter.register(new_adapter_name, new_adapter_klass)
155
- assert ActiveModelSerializers::Adapter.adapters.include?('foo'.freeze)
156
- assert ActiveModelSerializers::Adapter.lookup(:foo), new_adapter_klass
157
- ensure
158
- ActiveModelSerializers::Adapter.adapter_map.delete(new_adapter_name.to_s)
159
- end
160
-
161
- def test_inherited_adapter_hooks_register_adapter
162
- Object.const_set(:MyAdapter, Class.new)
163
- my_adapter = MyAdapter
164
- ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
165
- assert_equal ActiveModelSerializers::Adapter.lookup(:my_adapter), my_adapter
166
- ensure
167
- ActiveModelSerializers::Adapter.adapter_map.delete('my_adapter'.freeze)
168
- Object.send(:remove_const, :MyAdapter)
169
- end
170
-
171
- def test_inherited_adapter_hooks_register_namespaced_adapter
172
- Object.const_set(:MyNamespace, Module.new)
173
- MyNamespace.const_set(:MyAdapter, Class.new)
174
- my_adapter = MyNamespace::MyAdapter
175
- ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
176
- assert_equal ActiveModelSerializers::Adapter.lookup(:'my_namespace/my_adapter'), my_adapter
177
- ensure
178
- ActiveModelSerializers::Adapter.adapter_map.delete('my_namespace/my_adapter'.freeze)
179
- MyNamespace.send(:remove_const, :MyAdapter)
180
- Object.send(:remove_const, :MyNamespace)
181
- end
182
-
183
- def test_inherited_adapter_hooks_register_subclass_of_registered_adapter
184
- Object.const_set(:MyAdapter, Class.new)
185
- my_adapter = MyAdapter
186
- Object.const_set(:MySubclassedAdapter, Class.new(MyAdapter))
187
- my_subclassed_adapter = MySubclassedAdapter
188
- ActiveModelSerializers::Adapter::Base.inherited(my_adapter)
189
- ActiveModelSerializers::Adapter::Base.inherited(my_subclassed_adapter)
190
- assert_equal ActiveModelSerializers::Adapter.lookup(:my_adapter), my_adapter
191
- assert_equal ActiveModelSerializers::Adapter.lookup(:my_subclassed_adapter), my_subclassed_adapter
192
- ensure
193
- ActiveModelSerializers::Adapter.adapter_map.delete('my_adapter'.freeze)
194
- ActiveModelSerializers::Adapter.adapter_map.delete('my_subclassed_adapter'.freeze)
195
- Object.send(:remove_const, :MyAdapter)
196
- Object.send(:remove_const, :MySubclassedAdapter)
197
- end
198
-
199
- private
200
-
201
- def with_adapter_config_setup
202
- previous_adapter = ActiveModelSerializers.config.adapter
203
- yield
204
- ensure
205
- ActiveModelSerializers.config.adapter = previous_adapter
206
- end
207
- end
208
- end
@@ -1,22 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModelSerializers
4
- class JsonPointerTest < ActiveSupport::TestCase
5
- def test_attribute_pointer
6
- attribute_name = 'title'
7
- pointer = ActiveModelSerializers::JsonPointer.new(:attribute, attribute_name)
8
- assert_equal '/data/attributes/title', pointer
9
- end
10
-
11
- def test_primary_data_pointer
12
- pointer = ActiveModelSerializers::JsonPointer.new(:primary_data)
13
- assert_equal '/data', pointer
14
- end
15
-
16
- def test_unknown_data_pointer
17
- assert_raises(TypeError) do
18
- ActiveModelSerializers::JsonPointer.new(:unknown)
19
- end
20
- end
21
- end
22
- end
@@ -1,77 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class LoggingTest < ActiveSupport::TestCase
6
- class TestLogger < ActiveSupport::Logger
7
- def initialize
8
- @file = StringIO.new
9
- super(@file)
10
- end
11
-
12
- def messages
13
- @file.rewind
14
- @file.read
15
- end
16
- end
17
-
18
- def setup
19
- @author = Author.new(name: 'Steve K.')
20
- @post = Post.new(title: 'New Post', body: 'Body')
21
- @comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
22
- @post.comments = [@comment]
23
- @comment.post = @post
24
- @post.author = @author
25
- @author.posts = [@post]
26
- @post_serializer = PostSerializer.new(@post, custom_options: true)
27
-
28
- @old_logger = ActiveModelSerializers.logger
29
- @logger = ActiveSupport::TaggedLogging.new(TestLogger.new)
30
- logger @logger
31
- end
32
-
33
- def teardown
34
- logger @old_logger
35
- end
36
-
37
- def logger(logger)
38
- ActiveModelSerializers.logger = logger
39
- end
40
-
41
- def test_uses_ams_as_tag
42
- ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
43
- assert_match(/\[active_model_serializers\]/, @logger.messages)
44
- end
45
-
46
- def test_logs_when_call_serializable_hash
47
- ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
48
- assert_match(/Rendered/, @logger.messages)
49
- end
50
-
51
- def test_logs_when_call_as_json
52
- ActiveModelSerializers::SerializableResource.new(@post).as_json
53
- assert_match(/Rendered/, @logger.messages)
54
- end
55
-
56
- def test_logs_when_call_to_json
57
- ActiveModelSerializers::SerializableResource.new(@post).to_json
58
- assert_match(/Rendered/, @logger.messages)
59
- end
60
-
61
- def test_logs_correct_serializer
62
- ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
63
- assert_match(/PostSerializer/, @logger.messages)
64
- end
65
-
66
- def test_logs_correct_adapter
67
- ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
68
- assert_match(/ActiveModelSerializers::Adapter::Attributes/, @logger.messages)
69
- end
70
-
71
- def test_logs_the_duration
72
- ActiveModelSerializers::SerializableResource.new(@post).serializable_hash
73
- assert_match(/\(\d+\.\d+ms\)/, @logger.messages)
74
- end
75
- end
76
- end
77
- end
@@ -1,142 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModelSerializers
4
- class ModelTest < ActiveSupport::TestCase
5
- include ActiveModel::Serializer::Lint::Tests
6
-
7
- setup do
8
- @resource = ActiveModelSerializers::Model.new
9
- end
10
-
11
- def test_initialization_with_string_keys
12
- klass = Class.new(ActiveModelSerializers::Model) do
13
- attributes :key
14
- end
15
- value = 'value'
16
-
17
- model_instance = klass.new('key' => value)
18
-
19
- assert_equal model_instance.read_attribute_for_serialization(:key), value
20
- end
21
-
22
- def test_attributes_can_be_read_for_serialization
23
- klass = Class.new(ActiveModelSerializers::Model) do
24
- attributes :one, :two, :three
25
- end
26
- original_attributes = { one: 1, two: 2, three: 3 }
27
- original_instance = klass.new(original_attributes)
28
-
29
- # Initial value
30
- instance = original_instance
31
- expected_attributes = { one: 1, two: 2, three: 3 }.with_indifferent_access
32
- assert_equal expected_attributes, instance.attributes
33
- assert_equal 1, instance.one
34
- assert_equal 1, instance.read_attribute_for_serialization(:one)
35
-
36
- # FIXME: Change via accessor has no effect on attributes.
37
- instance = original_instance.dup
38
- instance.one = :not_one
39
- assert_equal expected_attributes, instance.attributes
40
- assert_equal :not_one, instance.one
41
- assert_equal :not_one, instance.read_attribute_for_serialization(:one)
42
-
43
- # FIXME: Change via mutating attributes
44
- instance = original_instance.dup
45
- instance.attributes[:one] = :not_one
46
- expected_attributes = { one: :not_one, two: 2, three: 3 }.with_indifferent_access
47
- assert_equal expected_attributes, instance.attributes
48
- assert_equal 1, instance.one
49
- assert_equal 1, instance.read_attribute_for_serialization(:one)
50
- end
51
-
52
- def test_attributes_can_be_read_for_serialization_with_attributes_accessors_fix
53
- klass = Class.new(ActiveModelSerializers::Model) do
54
- derive_attributes_from_names_and_fix_accessors
55
- attributes :one, :two, :three
56
- end
57
- original_attributes = { one: 1, two: 2, three: 3 }
58
- original_instance = klass.new(original_attributes)
59
-
60
- # Initial value
61
- instance = original_instance
62
- expected_attributes = { one: 1, two: 2, three: 3 }.with_indifferent_access
63
- assert_equal expected_attributes, instance.attributes
64
- assert_equal 1, instance.one
65
- assert_equal 1, instance.read_attribute_for_serialization(:one)
66
-
67
- expected_attributes = { one: :not_one, two: 2, three: 3 }.with_indifferent_access
68
- # Change via accessor
69
- instance = original_instance.dup
70
- instance.one = :not_one
71
- assert_equal expected_attributes, instance.attributes
72
- assert_equal :not_one, instance.one
73
- assert_equal :not_one, instance.read_attribute_for_serialization(:one)
74
-
75
- # Attributes frozen
76
- assert instance.attributes.frozen?
77
- end
78
-
79
- def test_id_attribute_can_be_read_for_serialization
80
- klass = Class.new(ActiveModelSerializers::Model) do
81
- attributes :id, :one, :two, :three
82
- end
83
- self.class.const_set(:SomeTestModel, klass)
84
- original_attributes = { id: :ego, one: 1, two: 2, three: 3 }
85
- original_instance = klass.new(original_attributes)
86
-
87
- # Initial value
88
- instance = original_instance.dup
89
- expected_attributes = { id: :ego, one: 1, two: 2, three: 3 }.with_indifferent_access
90
- assert_equal expected_attributes, instance.attributes
91
- assert_equal :ego, instance.id
92
- assert_equal :ego, instance.read_attribute_for_serialization(:id)
93
-
94
- # FIXME: Change via accessor has no effect on attributes.
95
- instance = original_instance.dup
96
- instance.id = :superego
97
- assert_equal expected_attributes, instance.attributes
98
- assert_equal :superego, instance.id
99
- assert_equal :superego, instance.read_attribute_for_serialization(:id)
100
-
101
- # FIXME: Change via mutating attributes
102
- instance = original_instance.dup
103
- instance.attributes[:id] = :superego
104
- expected_attributes = { id: :superego, one: 1, two: 2, three: 3 }.with_indifferent_access
105
- assert_equal expected_attributes, instance.attributes
106
- assert_equal :ego, instance.id
107
- assert_equal :ego, instance.read_attribute_for_serialization(:id)
108
- ensure
109
- self.class.send(:remove_const, :SomeTestModel)
110
- end
111
-
112
- def test_id_attribute_can_be_read_for_serialization_with_attributes_accessors_fix
113
- klass = Class.new(ActiveModelSerializers::Model) do
114
- derive_attributes_from_names_and_fix_accessors
115
- attributes :id, :one, :two, :three
116
- end
117
- self.class.const_set(:SomeTestModel, klass)
118
- original_attributes = { id: :ego, one: 1, two: 2, three: 3 }
119
- original_instance = klass.new(original_attributes)
120
-
121
- # Initial value
122
- instance = original_instance.dup
123
- expected_attributes = { id: :ego, one: 1, two: 2, three: 3 }.with_indifferent_access
124
- assert_equal expected_attributes, instance.attributes
125
- assert_equal :ego, instance.id
126
- assert_equal :ego, instance.read_attribute_for_serialization(:id)
127
-
128
- expected_attributes = { id: :superego, one: 1, two: 2, three: 3 }.with_indifferent_access
129
- # Change via accessor
130
- instance = original_instance.dup
131
- instance.id = :superego
132
- assert_equal expected_attributes, instance.attributes
133
- assert_equal :superego, instance.id
134
- assert_equal :superego, instance.read_attribute_for_serialization(:id)
135
-
136
- # Attributes frozen
137
- assert instance.attributes.frozen?
138
- ensure
139
- self.class.send(:remove_const, :SomeTestModel)
140
- end
141
- end
142
- end