active_model_serializers 0.9.0 → 0.9.8

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 (61) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +113 -0
  3. data/README.md +112 -19
  4. data/lib/action_controller/serialization.rb +35 -8
  5. data/lib/action_controller/serialization_test_case.rb +4 -4
  6. data/lib/active_model/array_serializer.rb +13 -10
  7. data/lib/active_model/default_serializer.rb +2 -6
  8. data/lib/active_model/serializable.rb +30 -11
  9. data/lib/active_model/serializable/utils.rb +16 -0
  10. data/lib/active_model/serializer.rb +90 -40
  11. data/lib/active_model/serializer/{associations.rb → association.rb} +8 -52
  12. data/lib/active_model/serializer/association/has_many.rb +39 -0
  13. data/lib/active_model/serializer/association/has_one.rb +25 -0
  14. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +1 -1
  15. data/lib/active_model/serializer/railtie.rb +12 -0
  16. data/lib/active_model/serializer/version.rb +1 -1
  17. data/lib/active_model_serializers.rb +1 -1
  18. data/lib/active_model_serializers/model/caching.rb +25 -0
  19. data/test/benchmark/app.rb +60 -0
  20. data/test/benchmark/benchmarking_support.rb +67 -0
  21. data/test/benchmark/bm_active_record.rb +41 -0
  22. data/test/benchmark/setup.rb +75 -0
  23. data/test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25 +0 -0
  24. data/test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0 +0 -0
  25. data/test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c +0 -0
  26. data/test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48 +0 -0
  27. data/test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3 +0 -0
  28. data/test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0 +0 -0
  29. data/test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i +0 -0
  30. data/test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790 +0 -0
  31. data/test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj +0 -0
  32. data/test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1 +0 -0
  33. data/test/fixtures/active_record.rb +4 -0
  34. data/test/fixtures/poro.rb +149 -1
  35. data/test/fixtures/template.html.erb +1 -0
  36. data/test/integration/action_controller/namespaced_serialization_test.rb +105 -0
  37. data/test/integration/action_controller/serialization_test.rb +5 -5
  38. data/test/integration/action_controller/serialization_test_case_test.rb +10 -0
  39. data/test/integration/active_record/active_record_test.rb +19 -2
  40. data/test/test_app.rb +3 -0
  41. data/test/tmp/app/assets/javascripts/accounts.js +2 -0
  42. data/test/tmp/app/assets/stylesheets/accounts.css +4 -0
  43. data/test/tmp/app/controllers/accounts_controller.rb +2 -0
  44. data/test/tmp/app/helpers/accounts_helper.rb +2 -0
  45. data/test/tmp/app/serializers/account_serializer.rb +3 -0
  46. data/test/tmp/config/routes.rb +1 -0
  47. data/test/unit/active_model/array_serializer/options_test.rb +16 -0
  48. data/test/unit/active_model/array_serializer/serialization_test.rb +18 -1
  49. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +15 -0
  50. data/test/unit/active_model/serializer/associations_test.rb +30 -0
  51. data/test/unit/active_model/serializer/attributes_test.rb +16 -0
  52. data/test/unit/active_model/serializer/config_test.rb +3 -0
  53. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +189 -0
  54. data/test/unit/active_model/serializer/has_many_test.rb +52 -17
  55. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +27 -0
  56. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +196 -0
  57. data/test/unit/active_model/serializer/has_one_test.rb +46 -0
  58. data/test/unit/active_model/serializer/options_test.rb +27 -0
  59. data/test/unit/active_model/serializer/url_helpers_test.rb +35 -0
  60. data/test/unit/active_model/serilizable_test.rb +50 -0
  61. metadata +98 -25
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class UrlHelpersTest < Minitest::Test
6
+ include Rails.application.routes.url_helpers
7
+
8
+ def setup
9
+ Object.const_set 'UserController', Class.new(ActionController::Base) do
10
+ def show
11
+ render text: 'profile'
12
+ end
13
+ end
14
+
15
+ Rails.application.routes.draw do
16
+ get '/profile/:id', as: :profile, controller: :user, action: :show
17
+ end
18
+ end
19
+
20
+ def test_url_helpers_are_available
21
+ serializer = Class.new(ActiveModel::Serializer) do
22
+ attributes :url
23
+
24
+ def url
25
+ profile_url(id: object.object_id)
26
+ end
27
+ end
28
+ profile = Profile.new
29
+
30
+ assert_equal({ url: profile_url(id: profile.object_id) },
31
+ serializer.new(profile).as_json)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class SerializableTest
5
+ class InstrumentationTest < Minitest::Test
6
+ def setup
7
+ @events = []
8
+
9
+ @subscriber = ActiveSupport::Notifications.subscribe('!serialize.active_model_serializers') do |name, start, finish, id, payload|
10
+ @events << { name: name, serializer: payload[:serializer] }
11
+ end
12
+ end
13
+
14
+ def teardown
15
+ ActiveSupport::Notifications.unsubscribe(@subscriber) if defined?(@subscriber)
16
+ end
17
+
18
+ def test_instruments_default_serializer
19
+ DefaultSerializer.new(1).as_json
20
+
21
+ assert_equal [{ name: '!serialize.active_model_serializers', serializer: 'ActiveModel::DefaultSerializer' }], @events
22
+ end
23
+
24
+ def test_instruments_serializer
25
+ profile = Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
26
+ serializer = ProfileSerializer.new(profile)
27
+
28
+ serializer.as_json
29
+
30
+ assert_equal [{ name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' }], @events
31
+ end
32
+
33
+ def test_instruments_array_serializer
34
+ profiles = [
35
+ Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1'),
36
+ Profile.new(name: 'Name 2', description: 'Description 2', comments: 'Comments 2')
37
+ ]
38
+ serializer = ArraySerializer.new(profiles)
39
+
40
+ serializer.as_json
41
+
42
+ assert_equal [
43
+ { name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' },
44
+ { name: '!serialize.active_model_serializers', serializer: 'ProfileSerializer' },
45
+ { name: '!serialize.active_model_serializers', serializer: 'ActiveModel::ArraySerializer' }
46
+ ], @events
47
+ end
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
8
8
  - Yehuda Katz
9
9
  - Santiago Pastorino
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-22 00:00:00.000000000 Z
13
+ date: 2020-12-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.2'
29
+ - !ruby/object:Gem::Dependency
30
+ name: concurrent-ruby
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: rails
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -59,8 +73,11 @@ files:
59
73
  - lib/active_model/array_serializer.rb
60
74
  - lib/active_model/default_serializer.rb
61
75
  - lib/active_model/serializable.rb
76
+ - lib/active_model/serializable/utils.rb
62
77
  - lib/active_model/serializer.rb
63
- - lib/active_model/serializer/associations.rb
78
+ - lib/active_model/serializer/association.rb
79
+ - lib/active_model/serializer/association/has_many.rb
80
+ - lib/active_model/serializer/association/has_one.rb
64
81
  - lib/active_model/serializer/config.rb
65
82
  - lib/active_model/serializer/generators/resource_override.rb
66
83
  - lib/active_model/serializer/generators/serializer/USAGE
@@ -72,8 +89,25 @@ files:
72
89
  - lib/active_model/serializer/version.rb
73
90
  - lib/active_model/serializer_support.rb
74
91
  - lib/active_model_serializers.rb
92
+ - lib/active_model_serializers/model/caching.rb
93
+ - test/benchmark/app.rb
94
+ - test/benchmark/benchmarking_support.rb
95
+ - test/benchmark/bm_active_record.rb
96
+ - test/benchmark/setup.rb
97
+ - test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25
98
+ - test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0
99
+ - test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c
100
+ - test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48
101
+ - test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3
102
+ - test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0
103
+ - test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i
104
+ - test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790
105
+ - test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj
106
+ - test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1
75
107
  - test/fixtures/active_record.rb
76
108
  - test/fixtures/poro.rb
109
+ - test/fixtures/template.html.erb
110
+ - test/integration/action_controller/namespaced_serialization_test.rb
77
111
  - test/integration/action_controller/serialization_test.rb
78
112
  - test/integration/action_controller/serialization_test_case_test.rb
79
113
  - test/integration/active_record/active_record_test.rb
@@ -82,10 +116,17 @@ files:
82
116
  - test/integration/generators/serializer_generator_test.rb
83
117
  - test/test_app.rb
84
118
  - test/test_helper.rb
119
+ - test/tmp/app/assets/javascripts/accounts.js
120
+ - test/tmp/app/assets/stylesheets/accounts.css
121
+ - test/tmp/app/controllers/accounts_controller.rb
122
+ - test/tmp/app/helpers/accounts_helper.rb
123
+ - test/tmp/app/serializers/account_serializer.rb
124
+ - test/tmp/config/routes.rb
85
125
  - test/unit/active_model/array_serializer/except_test.rb
86
126
  - test/unit/active_model/array_serializer/key_format_test.rb
87
127
  - test/unit/active_model/array_serializer/meta_test.rb
88
128
  - test/unit/active_model/array_serializer/only_test.rb
129
+ - test/unit/active_model/array_serializer/options_test.rb
89
130
  - test/unit/active_model/array_serializer/root_test.rb
90
131
  - test/unit/active_model/array_serializer/scope_test.rb
91
132
  - test/unit/active_model/array_serializer/serialization_test.rb
@@ -95,18 +136,23 @@ files:
95
136
  - test/unit/active_model/serializer/attributes_test.rb
96
137
  - test/unit/active_model/serializer/config_test.rb
97
138
  - test/unit/active_model/serializer/filter_test.rb
139
+ - test/unit/active_model/serializer/has_many_polymorphic_test.rb
98
140
  - test/unit/active_model/serializer/has_many_test.rb
141
+ - test/unit/active_model/serializer/has_one_and_has_many_test.rb
142
+ - test/unit/active_model/serializer/has_one_polymorphic_test.rb
99
143
  - test/unit/active_model/serializer/has_one_test.rb
100
144
  - test/unit/active_model/serializer/key_format_test.rb
101
145
  - test/unit/active_model/serializer/meta_test.rb
102
146
  - test/unit/active_model/serializer/options_test.rb
103
147
  - test/unit/active_model/serializer/root_test.rb
104
148
  - test/unit/active_model/serializer/scope_test.rb
149
+ - test/unit/active_model/serializer/url_helpers_test.rb
150
+ - test/unit/active_model/serilizable_test.rb
105
151
  homepage: https://github.com/rails-api/active_model_serializers
106
152
  licenses:
107
153
  - MIT
108
154
  metadata: {}
109
- post_install_message:
155
+ post_install_message:
110
156
  rdoc_options: []
111
157
  require_paths:
112
158
  - lib
@@ -121,40 +167,67 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
167
  - !ruby/object:Gem::Version
122
168
  version: '0'
123
169
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.2.2
126
- signing_key:
170
+ rubygems_version: 3.1.4
171
+ signing_key:
127
172
  specification_version: 4
128
173
  summary: Bringing consistency and object orientation to model serialization. Works
129
174
  great for client-side MVC frameworks!
130
175
  test_files:
131
- - test/test_helper.rb
176
+ - test/benchmark/app.rb
177
+ - test/benchmark/setup.rb
178
+ - test/benchmark/bm_active_record.rb
179
+ - test/benchmark/tmp/miniprofiler/mp_timers_m8fpoz2cvt3g9agz0bs3
180
+ - test/benchmark/tmp/miniprofiler/mp_timers_s15t1a6mvxe0z7vjv790
181
+ - test/benchmark/tmp/miniprofiler/mp_timers_hjry5rc32imd42oxoi48
182
+ - test/benchmark/tmp/miniprofiler/mp_timers_qg52tpca3uesdfguee9i
183
+ - test/benchmark/tmp/miniprofiler/mp_views_127.0.0.1
184
+ - test/benchmark/tmp/miniprofiler/mp_timers_fyz2gsml4z0ph9kpoy1c
185
+ - test/benchmark/tmp/miniprofiler/mp_timers_p92m2drnj1i568u3sta0
186
+ - test/benchmark/tmp/miniprofiler/mp_timers_6eqewtfgrhitvq5gqm25
187
+ - test/benchmark/tmp/miniprofiler/mp_timers_x8kal3d17nfds6vp4kcj
188
+ - test/benchmark/tmp/miniprofiler/mp_timers_8083sx03hu72pxz1a4d0
189
+ - test/benchmark/benchmarking_support.rb
132
190
  - test/unit/active_model/serializer/config_test.rb
191
+ - test/unit/active_model/serializer/has_one_test.rb
133
192
  - test/unit/active_model/serializer/associations/build_serializer_test.rb
134
- - test/unit/active_model/serializer/meta_test.rb
135
- - test/unit/active_model/serializer/root_test.rb
136
- - test/unit/active_model/serializer/filter_test.rb
193
+ - test/unit/active_model/serializer/key_format_test.rb
194
+ - test/unit/active_model/serializer/url_helpers_test.rb
195
+ - test/unit/active_model/serializer/associations_test.rb
196
+ - test/unit/active_model/serializer/options_test.rb
137
197
  - test/unit/active_model/serializer/attributes_test.rb
198
+ - test/unit/active_model/serializer/root_test.rb
199
+ - test/unit/active_model/serializer/meta_test.rb
200
+ - test/unit/active_model/serializer/has_many_polymorphic_test.rb
201
+ - test/unit/active_model/serializer/has_one_polymorphic_test.rb
138
202
  - test/unit/active_model/serializer/has_many_test.rb
139
- - test/unit/active_model/serializer/has_one_test.rb
203
+ - test/unit/active_model/serializer/has_one_and_has_many_test.rb
204
+ - test/unit/active_model/serializer/filter_test.rb
140
205
  - test/unit/active_model/serializer/scope_test.rb
141
- - test/unit/active_model/serializer/associations_test.rb
142
- - test/unit/active_model/serializer/options_test.rb
143
- - test/unit/active_model/serializer/key_format_test.rb
144
- - test/unit/active_model/array_serializer/meta_test.rb
206
+ - test/unit/active_model/default_serializer_test.rb
207
+ - test/unit/active_model/array_serializer/serialization_test.rb
208
+ - test/unit/active_model/array_serializer/key_format_test.rb
209
+ - test/unit/active_model/array_serializer/options_test.rb
210
+ - test/unit/active_model/array_serializer/only_test.rb
145
211
  - test/unit/active_model/array_serializer/root_test.rb
146
212
  - test/unit/active_model/array_serializer/except_test.rb
213
+ - test/unit/active_model/array_serializer/meta_test.rb
147
214
  - test/unit/active_model/array_serializer/scope_test.rb
148
- - test/unit/active_model/array_serializer/serialization_test.rb
149
- - test/unit/active_model/array_serializer/only_test.rb
150
- - test/unit/active_model/array_serializer/key_format_test.rb
151
- - test/unit/active_model/default_serializer_test.rb
152
- - test/integration/active_record/active_record_test.rb
153
- - test/integration/action_controller/serialization_test_case_test.rb
215
+ - test/unit/active_model/serilizable_test.rb
216
+ - test/test_app.rb
154
217
  - test/integration/action_controller/serialization_test.rb
155
- - test/integration/generators/resource_generator_test.rb
218
+ - test/integration/action_controller/serialization_test_case_test.rb
219
+ - test/integration/action_controller/namespaced_serialization_test.rb
220
+ - test/integration/active_record/active_record_test.rb
156
221
  - test/integration/generators/scaffold_controller_generator_test.rb
222
+ - test/integration/generators/resource_generator_test.rb
157
223
  - test/integration/generators/serializer_generator_test.rb
158
224
  - test/fixtures/poro.rb
225
+ - test/fixtures/template.html.erb
159
226
  - test/fixtures/active_record.rb
160
- - test/test_app.rb
227
+ - test/test_helper.rb
228
+ - test/tmp/app/serializers/account_serializer.rb
229
+ - test/tmp/app/controllers/accounts_controller.rb
230
+ - test/tmp/app/assets/javascripts/accounts.js
231
+ - test/tmp/app/assets/stylesheets/accounts.css
232
+ - test/tmp/app/helpers/accounts_helper.rb
233
+ - test/tmp/config/routes.rb