Skip to content

Commit 8761904

Browse files
committed
Update reflection tests
1 parent 5e01a93 commit 8761904

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

test/serializers/reflection_test.rb

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ def self.name
2525
@instance_options = {}
2626
end
2727

28+
def evaluate_association_value(association)
29+
association.lazy_association.eval_reflection_block
30+
end
31+
2832
# TODO: Remaining tests
2933
# test_reflection_value_block_with_scope
3034
# test_reflection_value_uses_serializer_instance_method
@@ -175,10 +179,12 @@ def test_reflection_block_with_link_mutates_the_reflection_links
175179

176180
# Build Association
177181
association = reflection.build_association(serializer_instance, @instance_options)
182+
178183
# Assert association links empty when not yet evaluated
179184
assert_equal @empty_links, reflection.options.fetch(:links)
180185
assert_equal @empty_links, association.links
181-
association.object # eager eval association
186+
187+
evaluate_association_value(association)
182188

183189
assert_equal @expected_links, association.links
184190
assert_equal @expected_links, reflection.options.fetch(:links)
@@ -200,12 +206,16 @@ def test_reflection_block_with_link_block_mutates_the_reflection_links
200206

201207
# Build Association
202208
association = reflection.build_association(serializer_instance, @instance_options)
209+
203210
# Assert association links empty when not yet evaluated
204211
assert_equal @empty_links, association.links
205-
association.object # eager eval association
212+
213+
evaluate_association_value(association)
214+
206215
# Assert before instance_eval link
207216
link = association.links.fetch(:self)
208217
assert_respond_to link, :call
218+
assert_respond_to reflection.options.fetch(:links).fetch(:self), :call
209219

210220
# Assert after instance_eval link
211221
assert_equal @expected_links.fetch(:self), reflection.instance_eval(&link)
@@ -226,7 +236,9 @@ def test_reflection_block_with_meta_mutates_the_reflection_meta
226236

227237
# Build Association
228238
association = reflection.build_association(serializer_instance, @instance_options)
229-
association.object # eager eval required
239+
240+
evaluate_association_value(association)
241+
230242
assert_equal @expected_meta, association.meta
231243
assert_equal @expected_meta, reflection.options.fetch(:meta)
232244
end
@@ -248,7 +260,9 @@ def test_reflection_block_with_meta_block_mutates_the_reflection_meta
248260
# Build Association
249261
association = reflection.build_association(serializer_instance, @instance_options)
250262
# Assert before instance_eval meta
251-
association.object # eager eval required
263+
264+
evaluate_association_value(association)
265+
252266
assert_respond_to association.meta, :call
253267
assert_respond_to reflection.options.fetch(:meta), :call
254268

@@ -281,7 +295,8 @@ def test_reflection_block_with_meta_in_link_block_mutates_the_reflection_meta
281295
assert_nil association.meta
282296
assert_nil reflection.options.fetch(:meta)
283297

284-
association.object # eager eval required
298+
evaluate_association_value(association)
299+
285300
link = association.links.fetch(:self)
286301
assert_respond_to link, :call
287302
assert_respond_to reflection.options.fetch(:links).fetch(:self), :call
@@ -290,8 +305,7 @@ def test_reflection_block_with_meta_in_link_block_mutates_the_reflection_meta
290305
# Assert after instance_eval link
291306
assert_equal 'no_uri_validation', reflection.instance_eval(&link)
292307
assert_equal @expected_meta, reflection.options.fetch(:meta)
293-
return # oh no, need to figure this out
294-
assert_nil association.meta # rubocop:disable Lint/UnreachableCode
308+
assert_equal @expected_meta, association.meta
295309
end
296310
# rubocop:enable Metrics/AbcSize
297311

@@ -319,7 +333,9 @@ def test_reflection_block_with_meta_block_in_link_block_mutates_the_reflection_m
319333
assert_nil reflection.options.fetch(:meta)
320334

321335
# Assert before instance_eval link
322-
association.object # eager eval required
336+
337+
evaluate_association_value(association)
338+
323339
link = association.links.fetch(:self)
324340
assert_nil reflection.options.fetch(:meta)
325341
assert_respond_to link, :call
@@ -330,12 +346,11 @@ def test_reflection_block_with_meta_block_in_link_block_mutates_the_reflection_m
330346
assert_respond_to association.links.fetch(:self), :call
331347
# Assert before instance_eval link meta
332348
assert_respond_to reflection.options.fetch(:meta), :call
333-
return # oh no, need to figure this out
334-
assert_nil association.meta # rubocop:disable Lint/UnreachableCode
349+
assert_respond_to association.meta, :call
335350

336351
# Assert after instance_eval link meta
337352
assert_equal @expected_meta, reflection.instance_eval(&reflection.options.fetch(:meta))
338-
assert_nil association.meta
353+
assert_respond_to association.meta, :call
339354
end
340355
# rubocop:enable Metrics/AbcSize
341356

@@ -356,7 +371,9 @@ def test_no_href_in_vanilla_reflection
356371
# Build Association
357372
association = reflection.build_association(serializer_instance, @instance_options)
358373
# Assert before instance_eval link
359-
association.object # eager eval required
374+
375+
evaluate_association_value(association)
376+
360377
link = association.links.fetch(:self)
361378
assert_respond_to link, :call
362379

@@ -380,7 +397,9 @@ def test_mutating_reflection_block_is_not_thread_safe
380397
reflection = serializer_class._reflections.fetch(:blog)
381398
assert_nil reflection.options.fetch(:meta)
382399
association = reflection.build_association(serializer_instance, @instance_options)
383-
association.object # eager eval required
400+
401+
evaluate_association_value(association)
402+
384403
assert_equal model1_meta, association.meta
385404
assert_equal model1_meta, reflection.options.fetch(:meta)
386405

@@ -396,7 +415,9 @@ def test_mutating_reflection_block_is_not_thread_safe
396415
assert_equal model1_meta, reflection.options.fetch(:meta)
397416

398417
association = reflection.build_association(serializer_instance, @instance_options)
399-
association.object # eager eval required
418+
419+
evaluate_association_value(association)
420+
400421
assert_equal model2_meta, association.meta
401422
assert_equal model2_meta, reflection.options.fetch(:meta)
402423
end

0 commit comments

Comments
 (0)