From e5a109865cb01ca426a1d68fc803b9abe6c9a4e5 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Sun, 8 Nov 2015 21:15:58 -0600 Subject: [PATCH] Test ArraySerializer less rigorously on Minitest 4 --- .../serializer/array_serializer.rb | 2 +- test/array_serializer_test.rb | 38 +++++++++++++------ test/test_helper.rb | 2 + 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index dc95d941..97efa864 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -2,7 +2,7 @@ require 'active_model/serializer/collection_serializer' class ActiveModel::Serializer class ArraySerializer < CollectionSerializer def initialize(*) - warn "Calling deprecated ArraySerializer in #{caller[0]}. Please use CollectionSerializer" + warn "Calling deprecated ArraySerializer in #{caller[0..2].join(', ')}. Please use CollectionSerializer" super end end diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb index 233756c4..1ffde04b 100644 --- a/test/array_serializer_test.rb +++ b/test/array_serializer_test.rb @@ -3,19 +3,35 @@ require_relative 'collection_serializer_test' module ActiveModel class Serializer - class ArraySerializerTest < CollectionSerializerTest - extend ActiveSupport::Testing::Stream - def self.run_one_method(*) - stderr = (capture(:stderr) do - super - end) - if stderr !~ /Calling deprecated ArraySerializer/ - fail Minitest::Assertion, stderr + # Minitest.run_one_method isn't present in minitest 4 + if $minitest_version > 4 # rubocop:disable Style/GlobalVars + class ArraySerializerTest < CollectionSerializerTest + extend ActiveSupport::Testing::Stream + def self.run_one_method(*) + stderr = (capture(:stderr) do + super + end) + if stderr !~ /Calling deprecated ArraySerializer/ + fail Minitest::Assertion, stderr + end + end + + def collection_serializer + ArraySerializer end end - - def collection_serializer - ArraySerializer + else + class ArraySerializerTest < Minitest::Test + extend ActiveSupport::Testing::Stream + def test_json_key_with_root_warns_when_using_array_serializer + stderr = (capture(:stderr) do + comment = Comment.new + post = Post.new + serializer = ArraySerializer.new([comment, post]) + assert_equal serializer.json_key, 'comments' + end) + assert_match(/Calling deprecated ArraySerializer/, stderr) + end end end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 6495d251..6a145e1a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -25,10 +25,12 @@ require 'minitest/autorun' require 'minitest/reporters' Minitest::Reporters.use! if defined?(Minitest::Test) + $minitest_version = 5 # rubocop:disable Style/GlobalVars # Minitest 5 # https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest/autorun.rb # https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest.rb#L45-L59 else + $minitest_version = 4 # rubocop:disable Style/GlobalVars # Minitest 4 # https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/autorun.rb # https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/unit.rb#L768-L787