active_model_serializers 0.10.6 → 0.10.13

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 (215) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +114 -1
  3. data/README.md +21 -24
  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/adapter/attributes.rb +2 -0
  7. data/lib/active_model/serializer/adapter/base.rb +2 -0
  8. data/lib/active_model/serializer/adapter/json.rb +2 -0
  9. data/lib/active_model/serializer/adapter/json_api.rb +2 -0
  10. data/lib/active_model/serializer/adapter/null.rb +2 -0
  11. data/lib/active_model/serializer/adapter.rb +2 -0
  12. data/lib/active_model/serializer/array_serializer.rb +2 -0
  13. data/lib/active_model/serializer/association.rb +2 -0
  14. data/lib/active_model/serializer/attribute.rb +2 -0
  15. data/lib/active_model/serializer/belongs_to_reflection.rb +2 -0
  16. data/lib/active_model/serializer/collection_serializer.rb +17 -5
  17. data/lib/active_model/serializer/concerns/caching.rb +7 -2
  18. data/lib/active_model/serializer/error_serializer.rb +2 -0
  19. data/lib/active_model/serializer/errors_serializer.rb +2 -0
  20. data/lib/active_model/serializer/field.rb +2 -0
  21. data/lib/active_model/serializer/fieldset.rb +3 -1
  22. data/lib/active_model/serializer/has_many_reflection.rb +2 -0
  23. data/lib/active_model/serializer/has_one_reflection.rb +2 -0
  24. data/lib/active_model/serializer/lazy_association.rb +6 -2
  25. data/lib/active_model/serializer/link.rb +23 -0
  26. data/lib/active_model/serializer/lint.rb +2 -0
  27. data/lib/active_model/serializer/null.rb +2 -0
  28. data/lib/active_model/serializer/reflection.rb +10 -5
  29. data/lib/active_model/serializer/version.rb +3 -1
  30. data/lib/active_model/serializer.rb +37 -19
  31. data/lib/active_model_serializers/adapter/attributes.rb +23 -0
  32. data/lib/active_model_serializers/adapter/base.rb +2 -0
  33. data/lib/active_model_serializers/adapter/json.rb +2 -0
  34. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +3 -1
  35. data/lib/active_model_serializers/adapter/json_api/error.rb +2 -0
  36. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +2 -0
  37. data/lib/active_model_serializers/adapter/json_api/link.rb +2 -0
  38. data/lib/active_model_serializers/adapter/json_api/meta.rb +2 -0
  39. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +45 -20
  40. data/lib/active_model_serializers/adapter/json_api/relationship.rb +18 -4
  41. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +33 -25
  42. data/lib/active_model_serializers/adapter/json_api.rb +14 -9
  43. data/lib/active_model_serializers/adapter/null.rb +2 -0
  44. data/lib/active_model_serializers/adapter.rb +3 -1
  45. data/lib/active_model_serializers/callbacks.rb +2 -0
  46. data/lib/active_model_serializers/deprecate.rb +2 -0
  47. data/lib/active_model_serializers/deserialization.rb +2 -0
  48. data/lib/active_model_serializers/json_pointer.rb +2 -0
  49. data/lib/active_model_serializers/logging.rb +2 -0
  50. data/lib/active_model_serializers/lookup_chain.rb +2 -0
  51. data/lib/active_model_serializers/model/caching.rb +26 -0
  52. data/lib/active_model_serializers/model.rb +2 -0
  53. data/lib/active_model_serializers/railtie.rb +4 -0
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +2 -0
  55. data/lib/active_model_serializers/serializable_resource.rb +4 -2
  56. data/lib/active_model_serializers/serialization_context.rb +2 -0
  57. data/lib/active_model_serializers/test/schema.rb +2 -0
  58. data/lib/active_model_serializers/test/serializer.rb +2 -0
  59. data/lib/active_model_serializers/test.rb +2 -0
  60. data/lib/active_model_serializers.rb +21 -11
  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 +43 -298
  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 -55
  74. data/CODE_OF_CONDUCT.md +0 -74
  75. data/CONTRIBUTING.md +0 -105
  76. data/Gemfile +0 -56
  77. data/Rakefile +0 -74
  78. data/active_model_serializers.gemspec +0 -63
  79. data/appveyor.yml +0 -30
  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 -263
  87. data/docs/general/caching.md +0 -58
  88. data/docs/general/configuration_options.md +0 -169
  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 -480
  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 -55
  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/schema.json +0 -366
  111. data/docs/jsonapi/schema.md +0 -151
  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 -116
  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_embed_ids_test.rb +0 -43
  148. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -96
  149. data/test/adapter/json_api/has_many_test.rb +0 -173
  150. data/test/adapter/json_api/has_one_test.rb +0 -80
  151. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -183
  152. data/test/adapter/json_api/json_api_test.rb +0 -33
  153. data/test/adapter/json_api/linked_test.rb +0 -413
  154. data/test/adapter/json_api/links_test.rb +0 -95
  155. data/test/adapter/json_api/pagination_links_test.rb +0 -193
  156. data/test/adapter/json_api/parse_test.rb +0 -137
  157. data/test/adapter/json_api/relationship_test.rb +0 -397
  158. data/test/adapter/json_api/resource_identifier_test.rb +0 -110
  159. data/test/adapter/json_api/resource_meta_test.rb +0 -100
  160. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -82
  161. data/test/adapter/json_api/transform_test.rb +0 -512
  162. data/test/adapter/json_api/type_test.rb +0 -61
  163. data/test/adapter/json_test.rb +0 -46
  164. data/test/adapter/null_test.rb +0 -22
  165. data/test/adapter/polymorphic_test.rb +0 -171
  166. data/test/adapter_test.rb +0 -67
  167. data/test/array_serializer_test.rb +0 -22
  168. data/test/benchmark/app.rb +0 -65
  169. data/test/benchmark/benchmarking_support.rb +0 -67
  170. data/test/benchmark/bm_active_record.rb +0 -81
  171. data/test/benchmark/bm_adapter.rb +0 -38
  172. data/test/benchmark/bm_caching.rb +0 -119
  173. data/test/benchmark/bm_lookup_chain.rb +0 -83
  174. data/test/benchmark/bm_transform.rb +0 -45
  175. data/test/benchmark/config.ru +0 -3
  176. data/test/benchmark/controllers.rb +0 -83
  177. data/test/benchmark/fixtures.rb +0 -219
  178. data/test/cache_test.rb +0 -651
  179. data/test/collection_serializer_test.rb +0 -123
  180. data/test/fixtures/active_record.rb +0 -113
  181. data/test/fixtures/poro.rb +0 -225
  182. data/test/generators/scaffold_controller_generator_test.rb +0 -24
  183. data/test/generators/serializer_generator_test.rb +0 -75
  184. data/test/grape_test.rb +0 -196
  185. data/test/lint_test.rb +0 -49
  186. data/test/logger_test.rb +0 -20
  187. data/test/poro_test.rb +0 -9
  188. data/test/serializable_resource_test.rb +0 -79
  189. data/test/serializers/association_macros_test.rb +0 -37
  190. data/test/serializers/associations_test.rb +0 -424
  191. data/test/serializers/attribute_test.rb +0 -153
  192. data/test/serializers/attributes_test.rb +0 -52
  193. data/test/serializers/caching_configuration_test_isolated.rb +0 -170
  194. data/test/serializers/configuration_test.rb +0 -32
  195. data/test/serializers/fieldset_test.rb +0 -14
  196. data/test/serializers/meta_test.rb +0 -202
  197. data/test/serializers/options_test.rb +0 -32
  198. data/test/serializers/read_attribute_for_serialization_test.rb +0 -79
  199. data/test/serializers/reflection_test.rb +0 -427
  200. data/test/serializers/root_test.rb +0 -21
  201. data/test/serializers/serialization_test.rb +0 -55
  202. data/test/serializers/serializer_for_test.rb +0 -136
  203. data/test/serializers/serializer_for_with_namespace_test.rb +0 -88
  204. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  205. data/test/support/isolated_unit.rb +0 -82
  206. data/test/support/rails5_shims.rb +0 -53
  207. data/test/support/rails_app.rb +0 -38
  208. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  209. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  210. data/test/support/schemas/custom/show.json +0 -7
  211. data/test/support/schemas/hyper_schema.json +0 -93
  212. data/test/support/schemas/render_using_json_api.json +0 -43
  213. data/test/support/schemas/simple_json_pointers.json +0 -10
  214. data/test/support/serialization_testing.rb +0 -71
  215. data/test/test_helper.rb +0 -70
data/test/grape_test.rb DELETED
@@ -1,196 +0,0 @@
1
- require 'test_helper'
2
- TestHelper.silence_warnings do
3
- require 'grape'
4
- end
5
- require 'grape/active_model_serializers'
6
- require 'kaminari'
7
- require 'kaminari/hooks'
8
- ::Kaminari::Hooks.init
9
-
10
- module ActiveModelSerializers
11
- class GrapeTest < ActiveSupport::TestCase
12
- include Rack::Test::Methods
13
- module Models
14
- def self.model1
15
- ARModels::Post.new(id: 1, title: 'Dummy Title', body: 'Lorem Ipsum')
16
- end
17
-
18
- def self.model2
19
- ARModels::Post.new(id: 2, title: 'Second Dummy Title', body: 'Second Lorem Ipsum')
20
- end
21
-
22
- def self.all
23
- @all ||=
24
- begin
25
- model1.save!
26
- model2.save!
27
- ARModels::Post.all
28
- end
29
- end
30
-
31
- def self.reset_all
32
- ARModels::Post.delete_all
33
- @all = nil
34
- end
35
-
36
- def self.collection_per
37
- 2
38
- end
39
-
40
- def self.collection
41
- @collection ||=
42
- begin
43
- Kaminari.paginate_array(
44
- [
45
- Profile.new(id: 1, name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
46
- Profile.new(id: 2, name: 'Name 2', description: 'Description 2', comments: 'Comments 2'),
47
- Profile.new(id: 3, name: 'Name 3', description: 'Description 3', comments: 'Comments 3'),
48
- Profile.new(id: 4, name: 'Name 4', description: 'Description 4', comments: 'Comments 4'),
49
- Profile.new(id: 5, name: 'Name 5', description: 'Description 5', comments: 'Comments 5')
50
- ]
51
- ).page(1).per(collection_per)
52
- end
53
- end
54
- end
55
-
56
- class GrapeTest < Grape::API
57
- format :json
58
- TestHelper.silence_warnings do
59
- include Grape::ActiveModelSerializers
60
- end
61
-
62
- def self.resources(*)
63
- TestHelper.silence_warnings do
64
- super
65
- end
66
- end
67
-
68
- resources :grape do
69
- get '/render' do
70
- render Models.model1
71
- end
72
-
73
- get '/render_with_json_api' do
74
- post = Models.model1
75
- render post, meta: { page: 1, total_pages: 2 }, adapter: :json_api
76
- end
77
-
78
- get '/render_array_with_json_api' do
79
- posts = Models.all
80
- render posts, adapter: :json_api
81
- end
82
-
83
- get '/render_collection_with_json_api' do
84
- posts = Models.collection
85
- render posts, adapter: :json_api
86
- end
87
-
88
- get '/render_with_implicit_formatter' do
89
- Models.model1
90
- end
91
-
92
- get '/render_array_with_implicit_formatter' do
93
- Models.all
94
- end
95
-
96
- get '/render_collection_with_implicit_formatter' do
97
- Models.collection
98
- end
99
- end
100
- end
101
-
102
- def app
103
- Grape::Middleware::Globals.new(GrapeTest.new)
104
- end
105
-
106
- extend Minitest::Assertions
107
- def self.run_one_method(*)
108
- _, stderr = capture_io do
109
- super
110
- end
111
- fail Minitest::Assertion, stderr if stderr !~ /grape/
112
- end
113
-
114
- def test_formatter_returns_json
115
- get '/grape/render'
116
-
117
- post = Models.model1
118
- serializable_resource = serializable(post)
119
-
120
- assert last_response.ok?
121
- assert_equal serializable_resource.to_json, last_response.body
122
- end
123
-
124
- def test_render_helper_passes_through_options_correctly
125
- get '/grape/render_with_json_api'
126
-
127
- post = Models.model1
128
- serializable_resource = serializable(post, serializer: ARModels::PostSerializer, adapter: :json_api, meta: { page: 1, total_pages: 2 })
129
-
130
- assert last_response.ok?
131
- assert_equal serializable_resource.to_json, last_response.body
132
- end
133
-
134
- def test_formatter_handles_arrays
135
- get '/grape/render_array_with_json_api'
136
-
137
- posts = Models.all
138
- serializable_resource = serializable(posts, adapter: :json_api)
139
-
140
- assert last_response.ok?
141
- assert_equal serializable_resource.to_json, last_response.body
142
- ensure
143
- Models.reset_all
144
- end
145
-
146
- def test_formatter_handles_collections
147
- get '/grape/render_collection_with_json_api'
148
- assert last_response.ok?
149
-
150
- representation = JSON.parse(last_response.body)
151
- assert representation.include?('data')
152
- assert representation['data'].count == Models.collection_per
153
- assert representation.include?('links')
154
- assert representation['links'].count > 0
155
- end
156
-
157
- def test_implicit_formatter
158
- post = Models.model1
159
- serializable_resource = serializable(post, adapter: :json_api)
160
-
161
- with_adapter :json_api do
162
- get '/grape/render_with_implicit_formatter'
163
- end
164
-
165
- assert last_response.ok?
166
- assert_equal serializable_resource.to_json, last_response.body
167
- end
168
-
169
- def test_implicit_formatter_handles_arrays
170
- posts = Models.all
171
- serializable_resource = serializable(posts, adapter: :json_api)
172
-
173
- with_adapter :json_api do
174
- get '/grape/render_array_with_implicit_formatter'
175
- end
176
-
177
- assert last_response.ok?
178
- assert_equal serializable_resource.to_json, last_response.body
179
- ensure
180
- Models.reset_all
181
- end
182
-
183
- def test_implicit_formatter_handles_collections
184
- with_adapter :json_api do
185
- get '/grape/render_collection_with_implicit_formatter'
186
- end
187
-
188
- representation = JSON.parse(last_response.body)
189
- assert last_response.ok?
190
- assert representation.include?('data')
191
- assert representation['data'].count == Models.collection_per
192
- assert representation.include?('links')
193
- assert representation['links'].count > 0
194
- end
195
- end
196
- end
data/test/lint_test.rb DELETED
@@ -1,49 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class LintTest < ActiveSupport::TestCase
6
- include ActiveModel::Serializer::Lint::Tests
7
-
8
- class CompliantResource
9
- def serializable_hash(options = nil)
10
- end
11
-
12
- def read_attribute_for_serialization(name)
13
- end
14
-
15
- def as_json(options = nil)
16
- end
17
-
18
- def to_json(options = nil)
19
- end
20
-
21
- def cache_key
22
- end
23
-
24
- def id
25
- end
26
-
27
- def updated_at
28
- end
29
-
30
- def errors
31
- end
32
-
33
- def self.human_attribute_name(_, _ = {})
34
- end
35
-
36
- def self.lookup_ancestors
37
- end
38
-
39
- def self.model_name
40
- @_model_name ||= ActiveModel::Name.new(self)
41
- end
42
- end
43
-
44
- def setup
45
- @resource = CompliantResource.new
46
- end
47
- end
48
- end
49
- end
data/test/logger_test.rb DELETED
@@ -1,20 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModelSerializers
4
- class LoggerTest < ActiveSupport::TestCase
5
- def test_logger_is_set_to_action_controller_logger_when_initializer_runs
6
- assert_equal $action_controller_logger, ActionController::Base.logger # rubocop:disable Style/GlobalVars
7
- end
8
-
9
- def test_logger_can_be_set
10
- original_logger = ActiveModelSerializers.logger
11
- logger = Logger.new(STDOUT)
12
-
13
- ActiveModelSerializers.logger = logger
14
-
15
- assert_equal ActiveModelSerializers.logger, logger
16
- ensure
17
- ActiveModelSerializers.logger = original_logger
18
- end
19
- end
20
- end
data/test/poro_test.rb DELETED
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PoroTest < ActiveSupport::TestCase
4
- include ActiveModel::Serializer::Lint::Tests
5
-
6
- def setup
7
- @resource = Model.new
8
- end
9
- end
@@ -1,79 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModelSerializers
4
- class SerializableResourceTest < ActiveSupport::TestCase
5
- def setup
6
- @resource = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
7
- @serializer = ProfileSerializer.new(@resource)
8
- @adapter = ActiveModelSerializers::Adapter.create(@serializer)
9
- @serializable_resource = SerializableResource.new(@resource)
10
- end
11
-
12
- def test_deprecation
13
- assert_output(nil, /deprecated/) do
14
- deprecated_serializable_resource = ActiveModel::SerializableResource.new(@resource)
15
- assert_equal(@serializable_resource.as_json, deprecated_serializable_resource.as_json)
16
- end
17
- end
18
-
19
- def test_serializable_resource_delegates_serializable_hash_to_the_adapter
20
- options = nil
21
- assert_equal @adapter.serializable_hash(options), @serializable_resource.serializable_hash(options)
22
- end
23
-
24
- def test_serializable_resource_delegates_to_json_to_the_adapter
25
- options = nil
26
- assert_equal @adapter.to_json(options), @serializable_resource.to_json(options)
27
- end
28
-
29
- def test_serializable_resource_delegates_as_json_to_the_adapter
30
- options = nil
31
- assert_equal @adapter.as_json(options), @serializable_resource.as_json(options)
32
- end
33
-
34
- def test_use_adapter_with_adapter_option
35
- assert SerializableResource.new(@resource, adapter: 'json').use_adapter?
36
- end
37
-
38
- def test_use_adapter_with_adapter_option_as_false
39
- refute SerializableResource.new(@resource, adapter: false).use_adapter?
40
- end
41
-
42
- class SerializableResourceErrorsTest < Minitest::Test
43
- def test_serializable_resource_with_errors
44
- options = nil
45
- resource = ModelWithErrors.new
46
- resource.errors.add(:name, 'must be awesome')
47
- serializable_resource = ActiveModelSerializers::SerializableResource.new(
48
- resource, serializer: ActiveModel::Serializer::ErrorSerializer,
49
- adapter: :json_api
50
- )
51
- expected_response_document = {
52
- errors: [
53
- { source: { pointer: '/data/attributes/name' }, detail: 'must be awesome' }
54
- ]
55
- }
56
- assert_equal serializable_resource.as_json(options), expected_response_document
57
- end
58
-
59
- def test_serializable_resource_with_collection_containing_errors
60
- options = nil
61
- resources = []
62
- resources << resource = ModelWithErrors.new
63
- resource.errors.add(:title, 'must be amazing')
64
- resources << ModelWithErrors.new
65
- serializable_resource = SerializableResource.new(
66
- resources, serializer: ActiveModel::Serializer::ErrorsSerializer,
67
- each_serializer: ActiveModel::Serializer::ErrorSerializer,
68
- adapter: :json_api
69
- )
70
- expected_response_document = {
71
- errors: [
72
- { source: { pointer: '/data/attributes/title' }, detail: 'must be amazing' }
73
- ]
74
- }
75
- assert_equal serializable_resource.as_json(options), expected_response_document
76
- end
77
- end
78
- end
79
- end
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- module ActiveModel
4
- class Serializer
5
- class AssociationMacrosTest < ActiveSupport::TestCase
6
- class AuthorSummarySerializer < ActiveModel::Serializer; end
7
-
8
- class AssociationsTestSerializer < Serializer
9
- belongs_to :author, serializer: AuthorSummarySerializer
10
- has_many :comments
11
- has_one :category
12
- end
13
-
14
- def before_setup
15
- @reflections = AssociationsTestSerializer._reflections.values
16
- end
17
-
18
- def test_has_one_defines_reflection
19
- has_one_reflection = HasOneReflection.new(:category, {})
20
-
21
- assert_includes(@reflections, has_one_reflection)
22
- end
23
-
24
- def test_has_many_defines_reflection
25
- has_many_reflection = HasManyReflection.new(:comments, {})
26
-
27
- assert_includes(@reflections, has_many_reflection)
28
- end
29
-
30
- def test_belongs_to_defines_reflection
31
- belongs_to_reflection = BelongsToReflection.new(:author, serializer: AuthorSummarySerializer)
32
-
33
- assert_includes(@reflections, belongs_to_reflection)
34
- end
35
- end
36
- end
37
- end