Skip to content

Commit

Permalink
Merge pull request #5550 from samvera/5457-deprecate-listener
Browse files Browse the repository at this point in the history
Provide deprecation on ProxyDepositListener
  • Loading branch information
eliotjordan authored Mar 18, 2022
2 parents ad00b23 + a006d5d commit da8f6d3
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/services/hyrax/listeners.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ module Listeners
autoload :MemberCleanupListener
autoload :MetadataIndexListener
autoload :ObjectLifecycleListener
autoload :ProxyDepositListener
autoload :TrophyCleanupListener
autoload :WorkflowListener
end
Expand Down
28 changes: 28 additions & 0 deletions app/services/hyrax/listeners/proxy_deposit_listener.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# frozen_string_literal: true

module Hyrax
module Listeners
##
# @deprecated transfer requests are now carried out synchronously during
# object save
#
## Listens for deposit events, and checks for proxy situations. When a user
# deposits an item `on_behalf_of` another, ensures transfer is handled.
class ProxyDepositListener
##
# Called when 'object.deposited' event is published
# @param [Dry::Events::Event] _event
# @return [void]
def on_object_deposited(_event)
Deprecation.warn(
"The ProxyDepositListener was deprecated, effective immediately, in \
response to a difficult-to-diagnose race condition bug. This listener \
is now a no-op. To retain functionality ensure that \
DefaultMiddlewareStack is configured to use \
Hyrax::Actors::TransferRequestActor. To quiet this deprecation remove any \
local initializer configuration that subscribes this listener."
)
end
end
end
end
22 changes: 22 additions & 0 deletions spec/services/hyrax/listeners/proxy_deposit_listener_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# frozen_string_literal: true

RSpec.describe Hyrax::Listeners::ProxyDepositListener do
subject(:listener) { described_class.new }
let(:data) { { object: resource, user: depositor } }
let(:depositor) { FactoryBot.create(:user) }
let(:event) { Dry::Events::Event.new(event_type, data) }
let(:proxied_to) { FactoryBot.create(:user) }
let(:resource) { FactoryBot.valkyrie_create(:hyrax_work, on_behalf_of: proxied_to.user_key) }

describe 'on_object_deposited' do
let(:event_type) { :on_object_deposited }

context 'when object has been deposited as proxy for another user' do
it 'is a deprecated no-op' do
expect(Deprecation).to receive(:warn).at_least(:once)
expect { listener.on_object_deposited(event) }
.not_to have_enqueued_job
end
end
end
end

0 comments on commit da8f6d3

Please sign in to comment.