Skip to content

Commit e5a1098

Browse files
committed
Test ArraySerializer less rigorously on Minitest 4
1 parent efe5128 commit e5a1098

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

lib/active_model/serializer/array_serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
class ActiveModel::Serializer
33
class ArraySerializer < CollectionSerializer
44
def initialize(*)
5-
warn "Calling deprecated ArraySerializer in #{caller[0]}. Please use CollectionSerializer"
5+
warn "Calling deprecated ArraySerializer in #{caller[0..2].join(', ')}. Please use CollectionSerializer"
66
super
77
end
88
end

test/array_serializer_test.rb

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,35 @@
33

44
module ActiveModel
55
class Serializer
6-
class ArraySerializerTest < CollectionSerializerTest
7-
extend ActiveSupport::Testing::Stream
8-
def self.run_one_method(*)
9-
stderr = (capture(:stderr) do
10-
super
11-
end)
12-
if stderr !~ /Calling deprecated ArraySerializer/
13-
fail Minitest::Assertion, stderr
6+
# Minitest.run_one_method isn't present in minitest 4
7+
if $minitest_version > 4 # rubocop:disable Style/GlobalVars
8+
class ArraySerializerTest < CollectionSerializerTest
9+
extend ActiveSupport::Testing::Stream
10+
def self.run_one_method(*)
11+
stderr = (capture(:stderr) do
12+
super
13+
end)
14+
if stderr !~ /Calling deprecated ArraySerializer/
15+
fail Minitest::Assertion, stderr
16+
end
1417
end
15-
end
1618

17-
def collection_serializer
18-
ArraySerializer
19+
def collection_serializer
20+
ArraySerializer
21+
end
22+
end
23+
else
24+
class ArraySerializerTest < Minitest::Test
25+
extend ActiveSupport::Testing::Stream
26+
def test_json_key_with_root_warns_when_using_array_serializer
27+
stderr = (capture(:stderr) do
28+
comment = Comment.new
29+
post = Post.new
30+
serializer = ArraySerializer.new([comment, post])
31+
assert_equal serializer.json_key, 'comments'
32+
end)
33+
assert_match(/Calling deprecated ArraySerializer/, stderr)
34+
end
1935
end
2036
end
2137
end

test/test_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@
2525
require 'minitest/reporters'
2626
Minitest::Reporters.use!
2727
if defined?(Minitest::Test)
28+
$minitest_version = 5 # rubocop:disable Style/GlobalVars
2829
# Minitest 5
2930
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest/autorun.rb
3031
# https://github.com/seattlerb/minitest/blob/e21fdda9d/lib/minitest.rb#L45-L59
3132
else
33+
$minitest_version = 4 # rubocop:disable Style/GlobalVars
3234
# Minitest 4
3335
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/autorun.rb
3436
# https://github.com/seattlerb/minitest/blob/644a52fd0/lib/minitest/unit.rb#L768-L787

0 commit comments

Comments
 (0)