active_model_serializers 0.8.3 → 0.9.1

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -5
  3. data/CONTRIBUTING.md +20 -0
  4. data/DESIGN.textile +4 -4
  5. data/{MIT-LICENSE.txt → MIT-LICENSE} +0 -0
  6. data/README.md +395 -95
  7. data/lib/action_controller/serialization.rb +50 -12
  8. data/lib/action_controller/serialization_test_case.rb +79 -0
  9. data/lib/active_model/array_serializer.rb +46 -78
  10. data/lib/active_model/default_serializer.rb +32 -0
  11. data/lib/active_model/serializable/utils.rb +16 -0
  12. data/lib/active_model/serializable.rb +62 -0
  13. data/lib/active_model/serializer/association/has_many.rb +39 -0
  14. data/lib/active_model/serializer/association/has_one.rb +25 -0
  15. data/lib/active_model/serializer/association.rb +58 -0
  16. data/lib/active_model/serializer/config.rb +31 -0
  17. data/lib/active_model/serializer/generators/resource_override.rb +13 -0
  18. data/lib/{generators → active_model/serializer/generators}/serializer/USAGE +0 -0
  19. data/lib/active_model/serializer/generators/serializer/scaffold_controller_generator.rb +14 -0
  20. data/lib/active_model/serializer/generators/serializer/serializer_generator.rb +37 -0
  21. data/lib/active_model/serializer/generators/serializer/templates/controller.rb +93 -0
  22. data/lib/active_model/serializer/generators/serializer/templates/serializer.rb +8 -0
  23. data/lib/active_model/serializer/railtie.rb +18 -0
  24. data/lib/active_model/{serializers → serializer}/version.rb +1 -1
  25. data/lib/active_model/serializer.rb +209 -422
  26. data/lib/active_model/serializer_support.rb +5 -0
  27. data/lib/active_model_serializers.rb +12 -87
  28. data/test/fixtures/active_record.rb +92 -0
  29. data/test/fixtures/poro.rb +184 -0
  30. data/test/fixtures/template.html.erb +1 -0
  31. data/test/integration/action_controller/namespaced_serialization_test.rb +96 -0
  32. data/test/integration/action_controller/serialization_test.rb +303 -0
  33. data/test/integration/action_controller/serialization_test_case_test.rb +71 -0
  34. data/test/integration/active_record/active_record_test.rb +77 -0
  35. data/test/integration/generators/resource_generator_test.rb +26 -0
  36. data/test/integration/generators/scaffold_controller_generator_test.rb +64 -0
  37. data/test/integration/generators/serializer_generator_test.rb +41 -0
  38. data/test/test_app.rb +14 -0
  39. data/test/test_helper.rb +10 -18
  40. data/test/tmp/app/serializers/account_serializer.rb +3 -0
  41. data/test/unit/active_model/array_serializer/except_test.rb +18 -0
  42. data/test/unit/active_model/array_serializer/key_format_test.rb +18 -0
  43. data/test/unit/active_model/array_serializer/meta_test.rb +53 -0
  44. data/test/unit/active_model/array_serializer/only_test.rb +18 -0
  45. data/test/unit/active_model/array_serializer/root_test.rb +102 -0
  46. data/test/unit/active_model/array_serializer/scope_test.rb +24 -0
  47. data/test/unit/active_model/array_serializer/serialization_test.rb +199 -0
  48. data/test/unit/active_model/default_serializer_test.rb +13 -0
  49. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +36 -0
  50. data/test/unit/active_model/serializer/associations_test.rb +19 -0
  51. data/test/unit/active_model/serializer/attributes_test.rb +57 -0
  52. data/test/unit/active_model/serializer/config_test.rb +91 -0
  53. data/test/unit/active_model/serializer/filter_test.rb +69 -0
  54. data/test/unit/active_model/serializer/has_many_polymorphic_test.rb +189 -0
  55. data/test/unit/active_model/serializer/has_many_test.rb +265 -0
  56. data/test/unit/active_model/serializer/has_one_and_has_many_test.rb +27 -0
  57. data/test/unit/active_model/serializer/has_one_polymorphic_test.rb +196 -0
  58. data/test/unit/active_model/serializer/has_one_test.rb +239 -0
  59. data/test/unit/active_model/serializer/key_format_test.rb +25 -0
  60. data/test/unit/active_model/serializer/meta_test.rb +39 -0
  61. data/test/unit/active_model/serializer/options_test.rb +34 -0
  62. data/test/unit/active_model/serializer/root_test.rb +117 -0
  63. data/test/unit/active_model/serializer/scope_test.rb +49 -0
  64. data/test/unit/active_model/serializer/url_helpers_test.rb +35 -0
  65. metadata +104 -63
  66. data/.gitignore +0 -18
  67. data/.travis.yml +0 -28
  68. data/Gemfile +0 -4
  69. data/Gemfile.edge +0 -9
  70. data/Rakefile +0 -18
  71. data/active_model_serializers.gemspec +0 -24
  72. data/bench/perf.rb +0 -43
  73. data/cruft.md +0 -19
  74. data/lib/active_model/serializer/associations.rb +0 -233
  75. data/lib/active_record/serializer_override.rb +0 -16
  76. data/lib/generators/resource_override.rb +0 -13
  77. data/lib/generators/serializer/serializer_generator.rb +0 -42
  78. data/lib/generators/serializer/templates/serializer.rb +0 -19
  79. data/test/array_serializer_test.rb +0 -75
  80. data/test/association_test.rb +0 -592
  81. data/test/caching_test.rb +0 -96
  82. data/test/generators_test.rb +0 -85
  83. data/test/no_serialization_scope_test.rb +0 -34
  84. data/test/serialization_scope_name_test.rb +0 -67
  85. data/test/serialization_test.rb +0 -392
  86. data/test/serializer_support_test.rb +0 -51
  87. data/test/serializer_test.rb +0 -1465
  88. data/test/test_fakes.rb +0 -217
@@ -0,0 +1,239 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class HasOneTest < Minitest::Test
6
+ def setup
7
+ @association = UserSerializer._associations[:profile]
8
+ @old_association = @association.dup
9
+
10
+ @user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' })
11
+ @user_serializer = UserSerializer.new(@user)
12
+ end
13
+
14
+ def teardown
15
+ UserSerializer._associations[:profile] = @old_association
16
+ end
17
+
18
+ def test_associations_definition
19
+ assert_equal 1, UserSerializer._associations.length
20
+ assert_kind_of Association::HasOne, @association
21
+ assert_equal 'profile', @association.name
22
+ end
23
+
24
+ def test_associations_embedding_ids_serialization_using_serializable_hash
25
+ @association.embed = :ids
26
+
27
+ assert_equal({
28
+ name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
29
+ }, @user_serializer.serializable_hash)
30
+ end
31
+
32
+ def test_associations_embedding_ids_serialization_using_as_json
33
+ @association.embed = :ids
34
+
35
+ assert_equal({
36
+ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id }
37
+ }, @user_serializer.as_json)
38
+ end
39
+
40
+ def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options
41
+ @association.embed = :ids
42
+ @association.key = 'key'
43
+
44
+ assert_equal({
45
+ name: 'Name 1', email: 'mail@server.com', 'key' => @user.profile.object_id
46
+ }, @user_serializer.serializable_hash)
47
+ end
48
+
49
+ def test_associations_embedding_objects_serialization_using_serializable_hash
50
+ @association.embed = :objects
51
+
52
+ assert_equal({
53
+ name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' }
54
+ }, @user_serializer.serializable_hash)
55
+ end
56
+
57
+ def test_associations_embedding_objects_serialization_using_as_json
58
+ @association.embed = :objects
59
+
60
+ assert_equal({
61
+ 'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' } }
62
+ }, @user_serializer.as_json)
63
+ end
64
+
65
+ def test_associations_embedding_nil_ids_serialization_using_as_json
66
+ @association.embed = :ids
67
+ @user.instance_eval do
68
+ def profile
69
+ nil
70
+ end
71
+ end
72
+
73
+ assert_equal({
74
+ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => nil }
75
+ }, @user_serializer.as_json)
76
+ end
77
+
78
+ def test_associations_embedding_nil_objects_serialization_using_as_json
79
+ @association.embed = :objects
80
+ @user.instance_eval do
81
+ def profile
82
+ nil
83
+ end
84
+ end
85
+
86
+ assert_equal({
87
+ 'user' => { name: 'Name 1', email: 'mail@server.com', profile: nil }
88
+ }, @user_serializer.as_json)
89
+ end
90
+
91
+ def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options
92
+ @association.embed = :objects
93
+ @association.embedded_key = 'root'
94
+
95
+ assert_equal({
96
+ name: 'Name 1', email: 'mail@server.com', 'root' => { name: 'N1', description: 'D1' }
97
+ }, @user_serializer.serializable_hash)
98
+ end
99
+
100
+ def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash
101
+ @association.embed = :ids
102
+ @association.embed_in_root = true
103
+
104
+ assert_equal({
105
+ name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
106
+ }, @user_serializer.serializable_hash)
107
+ end
108
+
109
+ def test_associations_embedding_nil_ids_including_objects_serialization_using_as_json
110
+ @association.embed = :ids
111
+ @association.embed_in_root = true
112
+ @user.instance_eval do
113
+ def profile
114
+ nil
115
+ end
116
+ end
117
+
118
+ assert_equal({
119
+ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => nil },
120
+ 'profiles' => []
121
+ }, @user_serializer.as_json)
122
+ end
123
+
124
+ def test_associations_embedding_ids_including_objects_serialization_using_as_json
125
+ @association.embed = :ids
126
+ @association.embed_in_root = true
127
+
128
+ assert_equal({
129
+ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
130
+ 'profiles' => [{ name: 'N1', description: 'D1' }]
131
+ }, @user_serializer.as_json)
132
+ end
133
+
134
+ def test_associations_embedding_ids_including_objects_serialization_when_invoked_from_parent_serializer
135
+ @association.embed = :ids
136
+ @association.embed_in_root = true
137
+
138
+ user_info = UserInfo.new
139
+ user_info.instance_variable_set(:@user, @user)
140
+ user_info_serializer = UserInfoSerializer.new(user_info)
141
+
142
+ assert_equal({
143
+ 'user_info' => { user: { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id } },
144
+ 'profiles' => [{ name: 'N1', description: 'D1' }]
145
+ }, user_info_serializer.as_json)
146
+ end
147
+
148
+ def test_associations_embedding_ids_using_a_given_serializer
149
+ @association.embed = :ids
150
+ @association.embed_in_root = true
151
+ @association.serializer_from_options = Class.new(Serializer) do
152
+ def name
153
+ 'fake'
154
+ end
155
+
156
+ attributes :name
157
+ end
158
+
159
+ assert_equal({
160
+ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id },
161
+ 'profiles' => [{ name: 'fake' }]
162
+ }, @user_serializer.as_json)
163
+ end
164
+
165
+ def test_associations_embedding_objects_using_a_given_serializer
166
+ @association.serializer_from_options = Class.new(Serializer) do
167
+ def name
168
+ 'fake'
169
+ end
170
+
171
+ attributes :name
172
+ end
173
+
174
+ assert_equal({
175
+ 'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'fake' } }
176
+ }, @user_serializer.as_json)
177
+ end
178
+
179
+ def test_associations_embedding_ids_using_embed_namespace
180
+ @association.embed_namespace = :links
181
+ @association.embed = :ids
182
+ @association.key = :profile
183
+ assert_equal({
184
+ 'user' => {
185
+ name: 'Name 1', email: 'mail@server.com',
186
+ links: {
187
+ profile: @user.profile.object_id
188
+ }
189
+ }
190
+ }, @user_serializer.as_json)
191
+ end
192
+
193
+ def test_asociations_embedding_objects_using_embed_namespace
194
+ @association.embed_namespace = :links
195
+ @association.embed = :objects
196
+ assert_equal({
197
+ 'user' => {
198
+ name: 'Name 1', email: 'mail@server.com',
199
+ links: {
200
+ profile: { name: 'N1', description: 'D1' }
201
+ }
202
+ }
203
+ }, @user_serializer.as_json)
204
+ end
205
+
206
+ def test_associations_embedding_ids_using_embed_namespace_and_embed_in_root_key
207
+ @association.embed_in_root = true
208
+ @association.embed_in_root_key = :linked
209
+ @association.embed = :ids
210
+ assert_equal({
211
+ 'user' => {
212
+ name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id
213
+ },
214
+ linked: {
215
+ 'profiles' => [ { name: 'N1', description: 'D1' } ]
216
+ }
217
+ }, @user_serializer.as_json)
218
+ end
219
+
220
+ def test_associations_name_key_embedding_ids_serialization_using_serializable_hash
221
+ @association = NameKeyUserSerializer._associations[:profile]
222
+ @association.embed = :ids
223
+
224
+ assert_equal({
225
+ name: 'Name 1', email: 'mail@server.com', 'profile' => @user.profile.object_id
226
+ }, NameKeyUserSerializer.new(@user).serializable_hash)
227
+ end
228
+
229
+ def test_associations_name_key_embedding_ids_serialization_using_as_json
230
+ @association = NameKeyUserSerializer._associations[:profile]
231
+ @association.embed = :ids
232
+
233
+ assert_equal({
234
+ 'name_key_user' => { name: 'Name 1', email: 'mail@server.com', 'profile' => @user.profile.object_id }
235
+ }, NameKeyUserSerializer.new(@user).as_json)
236
+ end
237
+ end
238
+ end
239
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class KeyFormatTest < Minitest::Test
6
+ def test_lower_camel_format_option
7
+ object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
8
+ serializer = WebLogSerializer.new(object, key_format: :lower_camel)
9
+
10
+ expected = { name: 'Name 1', displayName: 'Display Name 1' }
11
+
12
+ assert_equal expected, serializer.serializable_object
13
+ end
14
+
15
+ def test_lower_camel_format_serializer
16
+ object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
17
+ serializer = WebLogLowerCamelSerializer.new(object)
18
+
19
+ expected = { name: 'Name 1', displayName: 'Display Name 1' }
20
+
21
+ assert_equal expected, serializer.serializable_object
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class MetaTest < Minitest::Test
6
+ def setup
7
+ @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
8
+ end
9
+
10
+ def test_meta
11
+ profile_serializer = ProfileSerializer.new(@profile, root: 'profile', meta: { total: 10 })
12
+
13
+ assert_equal({
14
+ 'profile' => {
15
+ name: 'Name 1',
16
+ description: 'Description 1'
17
+ },
18
+ meta: {
19
+ total: 10
20
+ }
21
+ }, profile_serializer.as_json)
22
+ end
23
+
24
+ def test_meta_using_meta_key
25
+ profile_serializer = ProfileSerializer.new(@profile, root: 'profile', meta_key: :my_meta, my_meta: { total: 10 })
26
+
27
+ assert_equal({
28
+ 'profile' => {
29
+ name: 'Name 1',
30
+ description: 'Description 1'
31
+ },
32
+ my_meta: {
33
+ total: 10
34
+ }
35
+ }, profile_serializer.as_json)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class OptionsTest < Minitest::Test
6
+ def setup
7
+ @serializer = ProfileSerializer.new(nil, context: {foo: :bar})
8
+ end
9
+
10
+ def test_custom_options_are_accessible_from_serializer
11
+ assert_equal({foo: :bar}, @serializer.context)
12
+ end
13
+ end
14
+
15
+ class SerializationOptionsTest < Minitest::Test
16
+ def setup
17
+ @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
18
+ @profile_serializer = ProfileSerializer.new(@profile)
19
+ @profile_serializer.instance_eval do
20
+ def description
21
+ serialization_options[:force_the_description]
22
+ end
23
+ end
24
+ end
25
+
26
+ def test_filtered_attributes_serialization
27
+ forced_description = "This is a test"
28
+ assert_equal({
29
+ 'profile' => { name: 'Name 1', description: forced_description }
30
+ }, @profile_serializer.as_json(force_the_description: forced_description))
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,117 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class RootAsOptionTest < Minitest::Test
6
+ def setup
7
+ @old_root = ProfileSerializer._root
8
+ @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
9
+ @serializer = ProfileSerializer.new(@profile, root: :initialize)
10
+ ProfileSerializer._root = true
11
+ end
12
+
13
+ def teardown
14
+ ProfileSerializer._root = @old_root
15
+ end
16
+
17
+ def test_root_is_not_displayed_using_serializable_hash
18
+ assert_equal({
19
+ name: 'Name 1', description: 'Description 1'
20
+ }, @serializer.serializable_hash)
21
+ end
22
+
23
+ def test_root_using_as_json
24
+ assert_equal({
25
+ initialize: {
26
+ name: 'Name 1', description: 'Description 1'
27
+ }
28
+ }, @serializer.as_json)
29
+ end
30
+
31
+ def test_root_from_serializer_name
32
+ @serializer = ProfileSerializer.new(@profile)
33
+
34
+ assert_equal({
35
+ 'profile' => {
36
+ name: 'Name 1', description: 'Description 1'
37
+ }
38
+ }, @serializer.as_json)
39
+ end
40
+
41
+ def test_root_as_argument_takes_precedence
42
+ assert_equal({
43
+ argument: {
44
+ name: 'Name 1', description: 'Description 1'
45
+ }
46
+ }, @serializer.as_json(root: :argument))
47
+ end
48
+
49
+ def test_using_false_root_in_initializer_takes_precedence
50
+ ProfileSerializer._root = 'root'
51
+ @serializer = ProfileSerializer.new(@profile, root: false)
52
+
53
+ assert_equal({
54
+ name: 'Name 1', description: 'Description 1'
55
+ }, @serializer.as_json)
56
+ end
57
+
58
+ def test_root_inheritance
59
+ ProfileSerializer._root = 'profile'
60
+
61
+ inherited_serializer_klass = Class.new(ProfileSerializer)
62
+ inherited_serializer_klass._root = 'inherited_profile'
63
+
64
+ another_inherited_serializer_klass = Class.new(ProfileSerializer)
65
+
66
+ assert_equal('inherited_profile',
67
+ inherited_serializer_klass._root)
68
+ assert_equal('profile',
69
+ another_inherited_serializer_klass._root)
70
+ end
71
+ end
72
+
73
+ class RootInSerializerTest < Minitest::Test
74
+ def setup
75
+ @old_root = ProfileSerializer._root
76
+ ProfileSerializer._root = :in_serializer
77
+ profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
78
+ @serializer = ProfileSerializer.new(profile)
79
+ @rooted_serializer = ProfileSerializer.new(profile, root: :initialize)
80
+ end
81
+
82
+ def teardown
83
+ ProfileSerializer._root = @old_root
84
+ end
85
+
86
+ def test_root_is_not_displayed_using_serializable_hash
87
+ assert_equal({
88
+ name: 'Name 1', description: 'Description 1'
89
+ }, @serializer.serializable_hash)
90
+ end
91
+
92
+ def test_root_using_as_json
93
+ assert_equal({
94
+ in_serializer: {
95
+ name: 'Name 1', description: 'Description 1'
96
+ }
97
+ }, @serializer.as_json)
98
+ end
99
+
100
+ def test_root_in_initializer_takes_precedence
101
+ assert_equal({
102
+ initialize: {
103
+ name: 'Name 1', description: 'Description 1'
104
+ }
105
+ }, @rooted_serializer.as_json)
106
+ end
107
+
108
+ def test_root_as_argument_takes_precedence
109
+ assert_equal({
110
+ argument: {
111
+ name: 'Name 1', description: 'Description 1'
112
+ }
113
+ }, @rooted_serializer.as_json(root: :argument))
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class Serializer
5
+ class ScopeTest < Minitest::Test
6
+ def setup
7
+ @serializer = ProfileSerializer.new(nil, scope: current_user)
8
+ end
9
+
10
+ def test_scope
11
+ assert_equal('user', @serializer.scope)
12
+ end
13
+
14
+ private
15
+
16
+ def current_user
17
+ 'user'
18
+ end
19
+ end
20
+
21
+ class NestedScopeTest < Minitest::Test
22
+ def setup
23
+ @association = UserSerializer._associations[:profile]
24
+ @old_association = @association.dup
25
+ @user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' })
26
+ @user_serializer = UserSerializer.new(@user, scope: 'user')
27
+ end
28
+
29
+ def teardown
30
+ UserSerializer._associations[:profile] = @old_association
31
+ end
32
+
33
+ def test_scope_passed_through
34
+ @association.serializer_from_options = Class.new(Serializer) do
35
+ def name
36
+ scope
37
+ end
38
+
39
+ attributes :name
40
+ end
41
+
42
+ assert_equal({
43
+ name: 'Name 1', email: 'mail@server.com', profile: { name: 'user' }
44
+ }, @user_serializer.serializable_hash)
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -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