@@ -6,7 +6,13 @@ class ArraySerializerTest < Minitest::Test
6
6
def setup
7
7
@comment = Comment . new
8
8
@post = Post . new
9
- @serializer = ArraySerializer . new ( [ @comment , @post ] , { some : :options } )
9
+ @resource = build_named_collection @comment , @post
10
+ @serializer = ArraySerializer . new ( @resource , { some : :options } )
11
+ end
12
+
13
+ def build_named_collection ( *resource )
14
+ resource . define_singleton_method ( :name ) { 'MeResource' }
15
+ resource
10
16
end
11
17
12
18
def test_respond_to_each
@@ -39,15 +45,52 @@ def test_meta_and_meta_key_attr_readers
39
45
assert_equal @serializer . meta_key , "the meta key"
40
46
end
41
47
42
- def test_json_key_when_resource_is_empty
43
- Array . class_eval do
44
- def name
45
- 'PostComment'
46
- end
47
- end
48
- @post_comments = [ ]
49
- @serializer = ArraySerializer . new ( @post_comments )
50
- assert_equal @serializer . json_key , "post_comments"
48
+ def test_root_default
49
+ @serializer = ArraySerializer . new ( [ @comment , @post ] )
50
+ assert_equal @serializer . root , nil
51
+ end
52
+
53
+ def test_root
54
+ expected = 'custom_root'
55
+ @serializer = ArraySerializer . new ( [ @comment , @post ] , root : expected )
56
+ assert_equal @serializer . root , expected
57
+ end
58
+
59
+ def test_root_with_no_serializers
60
+ expected = 'custom_root'
61
+ @serializer = ArraySerializer . new ( [ ] , root : expected )
62
+ assert_equal @serializer . root , expected
63
+ end
64
+
65
+ def test_json_key
66
+ assert_equal @serializer . json_key , 'comments'
67
+ end
68
+
69
+ def test_json_key_with_resource_with_name_and_no_serializers
70
+ serializer = ArraySerializer . new ( build_named_collection )
71
+ assert_equal serializer . json_key , 'me_resources'
72
+ end
73
+
74
+ def test_json_key_with_resource_with_nil_name_and_no_serializers
75
+ resource = [ ]
76
+ resource . define_singleton_method ( :name ) { nil }
77
+ serializer = ArraySerializer . new ( resource )
78
+ assert_equal serializer . json_key , nil
79
+ end
80
+
81
+ def test_json_key_with_resource_without_name_and_no_serializers
82
+ serializer = ArraySerializer . new ( [ ] )
83
+ assert_equal serializer . json_key , nil
84
+ end
85
+
86
+ def test_json_key_with_root
87
+ serializer = ArraySerializer . new ( @resource , root : 'custom_root' )
88
+ assert_equal serializer . json_key , 'custom_roots'
89
+ end
90
+
91
+ def test_json_key_with_root_and_no_serializers
92
+ serializer = ArraySerializer . new ( build_named_collection , root : 'custom_root' )
93
+ assert_equal serializer . json_key , 'custom_roots'
51
94
end
52
95
end
53
96
end
0 commit comments