active_model_serializers 0.9.0.alpha1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +132 -15
  3. data/lib/action_controller/serialization.rb +5 -0
  4. data/lib/action_controller/serialization_test_case.rb +79 -0
  5. data/lib/active_model/array_serializer.rb +15 -8
  6. data/lib/active_model/default_serializer.rb +12 -2
  7. data/lib/active_model/serializable.rb +21 -6
  8. data/lib/active_model/serializer.rb +84 -9
  9. data/lib/active_model/serializer/associations.rb +38 -11
  10. data/lib/active_model/serializer/generators/serializer/serializer_generator.rb +1 -1
  11. data/lib/active_model/serializer/version.rb +1 -1
  12. data/lib/active_model_serializers.rb +6 -2
  13. data/test/fixtures/poro.rb +11 -0
  14. data/test/integration/action_controller/serialization_test.rb +53 -0
  15. data/test/integration/action_controller/serialization_test_case_test.rb +61 -0
  16. data/test/integration/active_record/active_record_test.rb +1 -1
  17. data/test/integration/generators/scaffold_controller_generator_test.rb +0 -3
  18. data/test/test_helper.rb +4 -1
  19. data/test/unit/active_model/array_serializer/except_test.rb +18 -0
  20. data/test/unit/active_model/array_serializer/key_format_test.rb +18 -0
  21. data/test/unit/active_model/array_serializer/meta_test.rb +1 -1
  22. data/test/unit/active_model/array_serializer/only_test.rb +18 -0
  23. data/test/unit/active_model/array_serializer/root_test.rb +2 -2
  24. data/test/unit/active_model/array_serializer/scope_test.rb +1 -1
  25. data/test/unit/active_model/array_serializer/serialization_test.rb +120 -4
  26. data/test/unit/active_model/default_serializer_test.rb +1 -1
  27. data/test/unit/active_model/serializer/associations/build_serializer_test.rb +1 -1
  28. data/test/unit/active_model/serializer/associations_test.rb +1 -1
  29. data/test/unit/active_model/serializer/attributes_test.rb +1 -1
  30. data/test/unit/active_model/serializer/config_test.rb +7 -5
  31. data/test/unit/active_model/serializer/filter_test.rb +22 -2
  32. data/test/unit/active_model/serializer/has_many_test.rb +61 -4
  33. data/test/unit/active_model/serializer/has_one_test.rb +59 -3
  34. data/test/unit/active_model/serializer/key_format_test.rb +25 -0
  35. data/test/unit/active_model/serializer/meta_test.rb +1 -1
  36. data/test/unit/active_model/serializer/options_test.rb +15 -0
  37. data/test/unit/active_model/serializer/root_test.rb +2 -2
  38. data/test/unit/active_model/serializer/scope_test.rb +3 -3
  39. metadata +36 -27
  40. data/test/coverage_setup.rb +0 -15
  41. data/test/tmp/app/serializers/account_serializer.rb +0 -3
@@ -1,5 +1,4 @@
1
1
  require 'active_model/default_serializer'
2
- require 'active_model/serializer'
3
2
 
4
3
  module ActiveModel
5
4
  class Serializer
@@ -15,27 +14,40 @@ module ActiveModel
15
14
  @options = options
16
15
  self.embed = options.fetch(:embed) { CONFIG.embed }
17
16
  @embed_in_root = options.fetch(:embed_in_root) { options.fetch(:include) { CONFIG.embed_in_root } }
17
+ @key_format = options.fetch(:key_format) { CONFIG.key_format }
18
18
  @embed_key = options[:embed_key] || :id
19
19
  @key = options[:key]
20
20
  @embedded_key = options[:root] || name
21
+ @embed_in_root_key = options.fetch(:embed_in_root_key) { CONFIG.embed_in_root_key }
22
+ @embed_namespace = options.fetch(:embed_namespace) { CONFIG.embed_namespace }
21
23
 
22
24
  serializer = @options[:serializer]
23
- @serializer_class = serializer.is_a?(String) ? serializer.constantize : serializer
25
+ @serializer_from_options = serializer.is_a?(String) ? serializer.constantize : serializer
24
26
  end
25
27
 
26
28
  attr_reader :name, :embed_ids, :embed_objects
27
- attr_accessor :embed_in_root, :embed_key, :key, :embedded_key, :root_key, :serializer_class, :options
29
+ attr_accessor :embed_in_root, :embed_key, :key, :embedded_key, :root_key, :serializer_from_options, :options, :key_format, :embed_in_root_key, :embed_namespace
28
30
  alias embed_ids? embed_ids
29
31
  alias embed_objects? embed_objects
30
32
  alias embed_in_root? embed_in_root
33
+ alias embed_in_root_key? embed_in_root_key
34
+ alias embed_namespace? embed_namespace
31
35
 
32
36
  def embed=(embed)
33
37
  @embed_ids = embed == :id || embed == :ids
34
38
  @embed_objects = embed == :object || embed == :objects
35
39
  end
36
40
 
41
+ def serializer_from_object(object)
42
+ Serializer.serializer_for(object)
43
+ end
44
+
45
+ def default_serializer
46
+ DefaultSerializer
47
+ end
48
+
37
49
  def build_serializer(object, options = {})
38
- @serializer_class.new(object, options.merge(@options))
50
+ serializer_class(object).new(object, options.merge(self.options))
39
51
  end
40
52
 
41
53
  class HasOne < Association
@@ -45,8 +57,11 @@ module ActiveModel
45
57
  @key ||= "#{name}_id"
46
58
  end
47
59
 
60
+ def serializer_class(object)
61
+ serializer_from_options || serializer_from_object(object) || default_serializer
62
+ end
63
+
48
64
  def build_serializer(object, options = {})
49
- @serializer_class ||= Serializer.serializer_for(object) || DefaultSerializer
50
65
  options[:_wrap_in_array] = embed_in_root?
51
66
  super
52
67
  end
@@ -59,15 +74,27 @@ module ActiveModel
59
74
  @key ||= "#{name.to_s.singularize}_ids"
60
75
  end
61
76
 
62
- def build_serializer(object, options = {})
63
- if @serializer_class && !(@serializer_class <= ArraySerializer)
64
- @options[:each_serializer] = @serializer_class
65
- @serializer_class = ArraySerializer
77
+ def serializer_class(object)
78
+ if use_array_serializer?
79
+ ArraySerializer
66
80
  else
67
- @serializer_class ||= ArraySerializer
81
+ serializer_from_options
68
82
  end
83
+ end
69
84
 
70
- super
85
+ def options
86
+ if use_array_serializer?
87
+ { each_serializer: serializer_from_options }.merge! super
88
+ else
89
+ super
90
+ end
91
+ end
92
+
93
+ private
94
+
95
+ def use_array_serializer?
96
+ !serializer_from_options ||
97
+ serializer_from_options && !(serializer_from_options <= ArraySerializer)
71
98
  end
72
99
  end
73
100
  end
@@ -26,7 +26,7 @@ module Rails
26
26
  if options[:parent]
27
27
  options[:parent]
28
28
  elsif (ns = Rails::Generators.namespace) && ns.const_defined?(:ApplicationSerializer) ||
29
- defined?(::ApplicationSerializer)
29
+ (Object.const_get(:ApplicationSerializer) rescue nil)
30
30
  'ApplicationSerializer'
31
31
  else
32
32
  'ActiveModel::Serializer'
@@ -1,5 +1,5 @@
1
1
  module ActiveModel
2
2
  class Serializer
3
- VERSION = '0.9.0.alpha1'
3
+ VERSION = '0.9.0'
4
4
  end
5
5
  end
@@ -7,9 +7,13 @@ require 'active_model/serializer/railtie' if defined?(Rails)
7
7
  begin
8
8
  require 'action_controller'
9
9
  require 'action_controller/serialization'
10
+ require 'action_controller/serialization_test_case'
10
11
 
11
- ActiveSupport.on_load(:action_controller) do
12
- include ::ActionController::Serialization
12
+ ActiveSupport.on_load(:after_initialize) do
13
+ if ::ActionController::Serialization.enabled
14
+ ActionController::Base.send(:include, ::ActionController::Serialization)
15
+ ActionController::TestCase.send(:include, ::ActionController::SerializationAssertions)
16
+ end
13
17
  end
14
18
  rescue LoadError
15
19
  # rails not installed, continuing
@@ -35,6 +35,9 @@ end
35
35
  class Comment < Model
36
36
  end
37
37
 
38
+ class WebLog < Model
39
+ end
40
+
38
41
  ###
39
42
  ## Serializers
40
43
  ###
@@ -62,3 +65,11 @@ end
62
65
  class CommentSerializer < ActiveModel::Serializer
63
66
  attributes :content
64
67
  end
68
+
69
+ class WebLogSerializer < ActiveModel::Serializer
70
+ attributes :name, :display_name
71
+ end
72
+
73
+ class WebLogLowerCamelSerializer < WebLogSerializer
74
+ format_keys :lower_camel
75
+ end
@@ -194,6 +194,59 @@ module ActionController
194
194
  end
195
195
  end
196
196
 
197
+ class LowerCamelArraySerializerTest < ActionController::TestCase
198
+ class WebLogController < ActionController::Base
199
+ def render_array
200
+ render json: [WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}), WebLog.new({name: 'Name 2', display_name: 'Display Name 2'})], each_serializer: WebLogLowerCamelSerializer
201
+ end
202
+ end
203
+
204
+ tests WebLogController
205
+
206
+ def test_render_array
207
+ get :render_array
208
+ assert_equal 'application/json', @response.content_type
209
+ assert_equal '{"webLog":[{"name":"Name 1","displayName":"Display Name 1"},{"name":"Name 2","displayName":"Display Name 2"}]}', @response.body
210
+ end
211
+ end
212
+
213
+ class LowerCamelWoRootSerializerTest < ActionController::TestCase
214
+ class WebLogController < ActionController::Base
215
+ def render_without_root
216
+ render json: WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}),
217
+ root: false,
218
+ serializer: WebLogLowerCamelSerializer
219
+ end
220
+ end
221
+
222
+ tests WebLogController
223
+
224
+ def test_render_without_root
225
+ get :render_without_root
226
+ assert_equal 'application/json', @response.content_type
227
+ assert_equal '{"name":"Name 1","displayName":"Display Name 1"}', @response.body
228
+ end
229
+ end
230
+
231
+ class LowerCamelArrayWoRootSerializerTest < ActionController::TestCase
232
+ class WebLogController < ActionController::Base
233
+ def render_array_without_root
234
+ render json: [WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}),
235
+ WebLog.new({name: 'Name 2', display_name: 'Display Name 2'})],
236
+ root: false,
237
+ each_serializer: WebLogLowerCamelSerializer
238
+ end
239
+ end
240
+
241
+ tests WebLogController
242
+
243
+ def test_render_array_without_root
244
+ get :render_array_without_root
245
+ assert_equal 'application/json', @response.content_type
246
+ assert_equal '[{"name":"Name 1","displayName":"Display Name 1"},{"name":"Name 2","displayName":"Display Name 2"}]', @response.body
247
+ end
248
+ end
249
+
197
250
  class ArrayEmbedingSerializerTest < ActionController::TestCase
198
251
  def setup
199
252
  super
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ module ActionController
4
+ module SerializationsAssertions
5
+ class RenderSerializerTest < ActionController::TestCase
6
+ class MyController < ActionController::Base
7
+ def render_using_serializer
8
+ render json: Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
9
+ end
10
+
11
+ def render_text
12
+ render text: 'ok'
13
+ end
14
+ end
15
+
16
+ tests MyController
17
+
18
+ def test_supports_specifying_serializers_with_a_serializer_class
19
+ get :render_using_serializer
20
+ assert_serializer ProfileSerializer
21
+ end
22
+
23
+ def test_supports_specifying_serializers_with_a_regexp
24
+ get :render_using_serializer
25
+ assert_serializer %r{\AProfile.+\Z}
26
+ end
27
+
28
+ def test_supports_specifying_serializers_with_a_string
29
+ get :render_using_serializer
30
+ assert_serializer 'ProfileSerializer'
31
+ end
32
+
33
+ def test_supports_specifying_serializers_with_a_symbol
34
+ get :render_using_serializer
35
+ assert_serializer :profile_serializer
36
+ end
37
+
38
+ def test_supports_specifying_serializers_with_a_nil
39
+ get :render_text
40
+ assert_serializer nil
41
+ end
42
+
43
+ def test_raises_descriptive_error_message_when_serializer_was_not_rendered
44
+ get :render_using_serializer
45
+ e = assert_raise ActiveSupport::TestCase::Assertion do
46
+ assert_serializer 'PostSerializer'
47
+ end
48
+ assert_match 'expecting <"PostSerializer"> but rendering with <["ProfileSerializer"]>', e.message
49
+ end
50
+
51
+
52
+ def test_raises_argument_error_when_asserting_with_invalid_object
53
+ get :render_using_serializer
54
+ e = assert_raise ArgumentError do
55
+ assert_serializer Hash
56
+ end
57
+ assert_match 'assert_serializer only accepts a String, Symbol, Regexp, ActiveModel::Serializer, or nil', e.message
58
+ end
59
+ end
60
+ end
61
+ end
@@ -3,7 +3,7 @@ require 'fixtures/active_record'
3
3
 
4
4
  module ActiveModel
5
5
  class Serializer
6
- class ActiveRecordTest < ActiveModel::TestCase
6
+ class ActiveRecordTest < Minitest::Test
7
7
  def setup
8
8
  @post = ARPost.first
9
9
  end
@@ -16,7 +16,6 @@ class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
16
16
  run_generator
17
17
 
18
18
  assert_file 'app/controllers/accounts_controller.rb' do |content|
19
-
20
19
  assert_instance_method :index, content do |m|
21
20
  assert_match /@accounts = Account\.all/, m
22
21
  assert_match /format.html/, m
@@ -60,8 +59,6 @@ class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
60
59
 
61
60
  assert_match(/def account_params/, content)
62
61
  assert_match(/params\.require\(:account\)\.permit\(:name, :description, :business_id\)/, content)
63
-
64
62
  end
65
-
66
63
  end
67
64
  end
data/test/test_helper.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  require 'bundler/setup'
2
- require 'coverage_setup'
3
2
  require 'minitest/autorun'
4
3
  require 'active_model_serializers'
5
4
  require 'fixtures/poro'
6
5
 
6
+ # Ensure backward compatibility with Minitest 4
7
+ Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
8
+
7
9
  module TestHelper
8
10
  Routes = ActionDispatch::Routing::RouteSet.new
9
11
  Routes.draw do
@@ -12,6 +14,7 @@ module TestHelper
12
14
  end
13
15
 
14
16
  ActionController::Base.send :include, Routes.url_helpers
17
+ ActionController::Base.send :include, ActionController::Serialization
15
18
  end
16
19
 
17
20
  ActionController::TestCase.class_eval do
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class ArraySerializer
5
+ class ExceptTest < Minitest::Test
6
+ def test_array_serializer_pass_except_to_items_serializers
7
+ array = [Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }),
8
+ Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })]
9
+ serializer = ArraySerializer.new(array, except: [:description])
10
+
11
+ expected = [{ name: 'Name 1' },
12
+ { name: 'Name 2' }]
13
+
14
+ assert_equal expected, serializer.serializable_array
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class ArraySerializer
5
+ class KeyFormatTest < Minitest::Test
6
+ def test_array_serializer_pass_options_to_items_serializers
7
+ array = [WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'}),
8
+ WebLog.new({ name: 'Name 2', display_name: 'Display Name 2'})]
9
+ serializer = ArraySerializer.new(array, key_format: :lower_camel)
10
+
11
+ expected = [{ name: 'Name 1', displayName: 'Display Name 1' },
12
+ { name: 'Name 2', displayName: 'Display Name 2' }]
13
+
14
+ assert_equal expected, serializer.serializable_array
15
+ end
16
+ end
17
+ end
18
+ end
@@ -3,7 +3,7 @@ require 'active_model/serializer'
3
3
 
4
4
  module ActiveModel
5
5
  class ArraySerializer
6
- class MetaTest < ActiveModel::TestCase
6
+ class MetaTest < Minitest::Test
7
7
  def setup
8
8
  @profile1 = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
9
9
  @profile2 = Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module ActiveModel
4
+ class ArraySerializer
5
+ class OnlyTest < Minitest::Test
6
+ def test_array_serializer_pass_only_to_items_serializers
7
+ array = [Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }),
8
+ Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })]
9
+ serializer = ArraySerializer.new(array, only: [:name])
10
+
11
+ expected = [{ name: 'Name 1' },
12
+ { name: 'Name 2' }]
13
+
14
+ assert_equal expected, serializer.serializable_array
15
+ end
16
+ end
17
+ end
18
+ end
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  module ActiveModel
4
4
  class ArraySerializer
5
- class RootAsOptionTest < ActiveModel::TestCase
5
+ class RootAsOptionTest < Minitest::Test
6
6
  def setup
7
7
  @old_root = ArraySerializer._root
8
8
  @profile1 = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
@@ -50,7 +50,7 @@ module ActiveModel
50
50
  end
51
51
  end
52
52
 
53
- class RootInSerializerTest < ActiveModel::TestCase
53
+ class RootInSerializerTest < Minitest::Test
54
54
  def setup
55
55
  @old_root = ArraySerializer._root
56
56
  ArraySerializer._root = :in_serializer
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  module ActiveModel
4
4
  class ArraySerializer
5
- class ScopeTest < ActiveModel::TestCase
5
+ class ScopeTest < Minitest::Test
6
6
  def test_array_serializer_pass_options_to_items_serializers
7
7
  array = [Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }),
8
8
  Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })]
@@ -2,14 +2,14 @@ require 'test_helper'
2
2
 
3
3
  module ActiveModel
4
4
  class ArraySerializer
5
- class BasicObjectsSerializationTest < ActiveModel::TestCase
5
+ class BasicObjectsSerializationTest < Minitest::Test
6
6
  def setup
7
7
  array = [1, 2, 3]
8
- @serializer = ActiveModel::Serializer.serializer_for(array).new(array)
8
+ @serializer = Serializer.serializer_for(array).new(array)
9
9
  end
10
10
 
11
11
  def test_serializer_for_array_returns_appropriate_type
12
- assert_kind_of ArraySerializer, @serializer
12
+ assert_kind_of ActiveModel::ArraySerializer, @serializer
13
13
  end
14
14
 
15
15
  def test_array_serializer_serializes_simple_objects
@@ -18,7 +18,24 @@ module ActiveModel
18
18
  end
19
19
  end
20
20
 
21
- class ModelSerializationTest < ActiveModel::TestCase
21
+ class CustomArraySerializerSupport < Minitest::Test
22
+ def setup
23
+ Object.const_set(:ArraySerializer, Class.new)
24
+
25
+ array = [1, 2, 3]
26
+ @serializer_class = Serializer.serializer_for(array)
27
+ end
28
+
29
+ def teardown
30
+ Object.send(:remove_const, :ArraySerializer)
31
+ end
32
+
33
+ def test_serializer_for_array_returns_appropriate_type
34
+ assert_equal ::ArraySerializer, @serializer_class
35
+ end
36
+ end
37
+
38
+ class ModelSerializationTest < Minitest::Test
22
39
  def test_array_serializer_serializes_models
23
40
  array = [Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }),
24
41
  Profile.new({ name: 'Name 2', description: 'Description 2', comments: 'Comments 2' })]
@@ -78,6 +95,105 @@ module ActiveModel
78
95
  ensure
79
96
  PostSerializer._associations[:comments] = @old_association
80
97
  end
98
+
99
+ def test_embed_object_for_has_one_association_with_nil_value
100
+ @association = UserSerializer._associations[:profile]
101
+ @old_association = @association.dup
102
+
103
+ @association.embed = :objects
104
+
105
+ @user1 = User.new({ name: 'User 1', email: 'email1@server.com' })
106
+ @user2 = User.new({ name: 'User 2', email: 'email2@server.com' })
107
+
108
+ class << @user1
109
+ def profile
110
+ nil
111
+ end
112
+ end
113
+
114
+ class << @user2
115
+ def profile
116
+ @profile ||= Profile.new(name: 'Name 1', description: 'Desc 1')
117
+ end
118
+ end
119
+
120
+ @serializer = ArraySerializer.new([@user1, @user2]) #, root: :posts)
121
+ assert_equal([
122
+ { name: "User 1", email: "email1@server.com", profile: nil },
123
+ { name: "User 2", email: "email2@server.com", profile: { name: 'Name 1', description: 'Desc 1' } }
124
+ ], @serializer.as_json)
125
+ ensure
126
+ UserSerializer._associations[:profile] = @old_association
127
+ end
128
+
129
+ def test_embed_object_in_root_for_has_one_association_with_nil_value
130
+ @association = UserSerializer._associations[:profile]
131
+ @old_association = @association.dup
132
+
133
+ @association.embed = :ids
134
+ @association.embed_in_root = true
135
+
136
+ @user1 = User.new({ name: 'User 1', email: 'email1@server.com' })
137
+ @user2 = User.new({ name: 'User 2', email: 'email2@server.com' })
138
+
139
+ class << @user1
140
+ def profile
141
+ nil
142
+ end
143
+ end
144
+
145
+ class << @user2
146
+ def profile
147
+ @profile ||= Profile.new(name: 'Name 1', description: 'Desc 1')
148
+ end
149
+ end
150
+
151
+ @serializer = ArraySerializer.new([@user1, @user2], root: :users)
152
+ assert_equal({
153
+ users: [
154
+ { name: "User 1", email: "email1@server.com", 'profile_id' => nil },
155
+ { name: "User 2", email: "email2@server.com", 'profile_id' => @user2.profile.object_id }
156
+ ],
157
+ 'profiles' => [
158
+ { name: 'Name 1', description: 'Desc 1' }
159
+ ]
160
+ }, @serializer.as_json)
161
+ ensure
162
+ UserSerializer._associations[:profile] = @old_association
163
+ end
164
+
165
+ def test_embed_object_in_root_for_has_one_association_with_all_nil_values
166
+ @association = UserSerializer._associations[:profile]
167
+ @old_association = @association.dup
168
+
169
+ @association.embed = :ids
170
+ @association.embed_in_root = true
171
+
172
+ @user1 = User.new({ name: 'User 1', email: 'email1@server.com' })
173
+ @user2 = User.new({ name: 'User 2', email: 'email2@server.com' })
174
+
175
+ class << @user1
176
+ def profile
177
+ nil
178
+ end
179
+ end
180
+
181
+ class << @user2
182
+ def profile
183
+ nil
184
+ end
185
+ end
186
+
187
+ @serializer = ArraySerializer.new([@user1, @user2], root: :users)
188
+ assert_equal({
189
+ users: [
190
+ { name: "User 1", email: "email1@server.com", 'profile_id' => nil },
191
+ { name: "User 2", email: "email2@server.com", 'profile_id' => nil }
192
+ ]
193
+ }, @serializer.as_json)
194
+ ensure
195
+ UserSerializer._associations[:profile] = @old_association
196
+ end
81
197
  end
82
198
  end
83
199
  end