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,24 +0,0 @@
1
- require 'test_helper'
2
- require 'generators/rails/resource_override'
3
-
4
- class ResourceGeneratorTest < Rails::Generators::TestCase
5
- destination File.expand_path('../../../tmp/generators', __FILE__)
6
- setup :prepare_destination, :copy_routes
7
-
8
- tests Rails::Generators::ResourceGenerator
9
- arguments %w(account)
10
-
11
- def test_serializer_file_is_generated
12
- run_generator
13
-
14
- assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ActiveModel::Serializer/
15
- end
16
-
17
- private
18
-
19
- def copy_routes
20
- config_dir = File.join(destination_root, 'config')
21
- FileUtils.mkdir_p(config_dir)
22
- File.write(File.join(config_dir, 'routes.rb'), 'Rails.application.routes.draw {}')
23
- end
24
- end
@@ -1,75 +0,0 @@
1
- require 'test_helper'
2
- require 'generators/rails/resource_override'
3
- require 'generators/rails/serializer_generator'
4
-
5
- class SerializerGeneratorTest < Rails::Generators::TestCase
6
- destination File.expand_path('../../../tmp/generators', __FILE__)
7
- setup :prepare_destination
8
-
9
- tests Rails::Generators::SerializerGenerator
10
- arguments %w(account name:string description:text business:references)
11
-
12
- def test_generates_a_serializer
13
- run_generator
14
- assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ActiveModel::Serializer/
15
- end
16
-
17
- def test_generates_a_namespaced_serializer
18
- run_generator ['admin/account']
19
- assert_file 'app/serializers/admin/account_serializer.rb', /class Admin::AccountSerializer < ActiveModel::Serializer/
20
- end
21
-
22
- def test_uses_application_serializer_if_one_exists
23
- stub_safe_constantize(expected: 'ApplicationSerializer') do
24
- run_generator
25
- assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ApplicationSerializer/
26
- end
27
- end
28
-
29
- def test_uses_given_parent
30
- Object.const_set(:ApplicationSerializer, Class.new)
31
- run_generator ['Account', '--parent=MySerializer']
32
- assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < MySerializer/
33
- ensure
34
- Object.send :remove_const, :ApplicationSerializer
35
- end
36
-
37
- def test_generates_attributes_and_associations
38
- run_generator
39
- assert_file 'app/serializers/account_serializer.rb' do |serializer|
40
- assert_match(/^ attributes :id, :name, :description$/, serializer)
41
- assert_match(/^ has_one :business$/, serializer)
42
- assert_match(/^end\n*\z/, serializer)
43
- end
44
- end
45
-
46
- def test_with_no_attributes_does_not_add_extra_space
47
- run_generator ['account']
48
- assert_file 'app/serializers/account_serializer.rb' do |content|
49
- if RUBY_PLATFORM =~ /mingw/
50
- assert_no_match(/\r\n\r\nend/, content)
51
- else
52
- assert_no_match(/\n\nend/, content)
53
- end
54
- end
55
- end
56
-
57
- private
58
-
59
- def stub_safe_constantize(expected:)
60
- String.class_eval do
61
- alias_method :old, :safe_constantize
62
- end
63
- String.send(:define_method, :safe_constantize) do
64
- Class if self == expected
65
- end
66
-
67
- yield
68
- ensure
69
- String.class_eval do
70
- undef_method :safe_constantize
71
- alias_method :safe_constantize, :old
72
- undef_method :old
73
- end
74
- end
75
- end
@@ -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
@@ -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
@@ -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
@@ -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