diff --git a/lib/active_model_serializers/test/serializer.rb b/lib/active_model_serializers/test/serializer.rb index 16446989..dc812c55 100644 --- a/lib/active_model_serializers/test/serializer.rb +++ b/lib/active_model_serializers/test/serializer.rb @@ -6,6 +6,7 @@ module ActiveModelSerializers included do setup :setup_serialization_subscriptions + teardown :teardown_serialization_subscriptions end # Asserts that the request was rendered with the appropriate serializers. @@ -41,6 +42,7 @@ module ActiveModelSerializers def initialize @serializers = Set.new + @_subscribers = [] end def message=(message) @@ -62,12 +64,18 @@ module ActiveModelSerializers end def subscribe - ActiveSupport::Notifications.subscribe(event_name) do |_name, _start, _finish, _id, payload| + @_subscribers << ActiveSupport::Notifications.subscribe(event_name) do |_name, _start, _finish, _id, payload| serializer = payload[:serializer].name serializers << serializer end end + def unsubscribe + @_subscribers.each do |subscriber| + ActiveSupport::Notifications.unsubscribe(subscriber) + end + end + private def matches_class? @@ -108,6 +116,10 @@ module ActiveModelSerializers @assert_serializer = AssertSerializer.new @assert_serializer.subscribe end + + def teardown_serialization_subscriptions + @assert_serializer.unsubscribe + end end end end