Skip to content

Commit d9eefdb

Browse files
committed
Restore test-local subscriber teardown
This commit revises 0ce4ad3 `Remove unused/unusable unsubscribe since we don't want to unsubscribe` Looking at Rails implementation of assert_template which was likely the inspiration for assert_serializer: https://github.com/rails/rails-controller-testing/blob/f756b33c138c593eabe37f6085f8bac477b99bfe/lib/rails/controller/testing/template_assertions.rb Ref: - rails-api#596 - rails-api#620 - rails-api#616
1 parent 924be1f commit d9eefdb

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

lib/active_model_serializers/test/serializer.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module Serializer
66

77
included do
88
setup :setup_serialization_subscriptions
9+
teardown :teardown_serialization_subscriptions
910
end
1011

1112
# Asserts that the request was rendered with the appropriate serializers.
@@ -36,11 +37,12 @@ def assert_serializer(expectation, message = nil)
3637
end
3738

3839
class AssertSerializer
39-
attr_reader :serializers, :message
40+
attr_reader :serializers, :message, :_subscribers
4041
attr_accessor :response, :expectation
4142

4243
def initialize
4344
@serializers = Set.new
45+
@_subscribers = []
4446
end
4547

4648
def message=(message)
@@ -62,12 +64,18 @@ def matches?
6264
end
6365

6466
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|
6668
serializer = payload[:serializer].name
6769
serializers << serializer
6870
end
6971
end
7072

73+
def unsubscribe
74+
_subscribers.each do |subscriber|
75+
ActiveSupport::Notifications.unsubscribe(subscriber)
76+
end
77+
end
78+
7179
private
7280

7381
def matches_class?
@@ -108,6 +116,10 @@ def setup_serialization_subscriptions
108116
@assert_serializer = AssertSerializer.new
109117
@assert_serializer.subscribe
110118
end
119+
120+
def teardown_serialization_subscriptions
121+
@assert_serializer.unsubscribe
122+
end
111123
end
112124
end
113125
end

0 commit comments

Comments
 (0)