@@ -6,6 +6,7 @@ module Serializer
6
6
7
7
included do
8
8
setup :setup_serialization_subscriptions
9
+ teardown :teardown_serialization_subscriptions
9
10
end
10
11
11
12
# Asserts that the request was rendered with the appropriate serializers.
@@ -36,11 +37,12 @@ def assert_serializer(expectation, message = nil)
36
37
end
37
38
38
39
class AssertSerializer
39
- attr_reader :serializers , :message
40
+ attr_reader :serializers , :message , :_subscribers
40
41
attr_accessor :response , :expectation
41
42
42
43
def initialize
43
44
@serializers = Set . new
45
+ @_subscribers = [ ]
44
46
end
45
47
46
48
def message = ( message )
@@ -62,12 +64,18 @@ def matches?
62
64
end
63
65
64
66
def subscribe
65
- ActiveSupport ::Notifications . subscribe ( event_name ) do |_name , _start , _finish , _id , payload |
67
+ _subscribers << ActiveSupport ::Notifications . subscribe ( event_name ) do |_name , _start , _finish , _id , payload |
66
68
serializer = payload [ :serializer ] . name
67
69
serializers << serializer
68
70
end
69
71
end
70
72
73
+ def unsubscribe
74
+ _subscribers . each do |subscriber |
75
+ ActiveSupport ::Notifications . unsubscribe ( subscriber )
76
+ end
77
+ end
78
+
71
79
private
72
80
73
81
def matches_class?
@@ -108,6 +116,10 @@ def setup_serialization_subscriptions
108
116
@assert_serializer = AssertSerializer . new
109
117
@assert_serializer . subscribe
110
118
end
119
+
120
+ def teardown_serialization_subscriptions
121
+ @assert_serializer . unsubscribe
122
+ end
111
123
end
112
124
end
113
125
end
0 commit comments