Skip to content

Commit

Permalink
Provide deprecation on ProxyDepositListener
Browse files Browse the repository at this point in the history
  • Loading branch information
hackartisan committed Mar 17, 2022
1 parent 628457c commit 42c13ab
Show file tree
Hide file tree
Showing 4 changed files with 53 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
29 changes: 29 additions & 0 deletions app/services/hyrax/listeners/proxy_deposit_listener.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 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 and unregister this listener \
in config/initializers/listeners.rb by adding the line: \n
Hyrax.publisher.unsubscribe(Hyrax::Listeners::ProxyDepositListener.new)"
)
end
end
end
end
1 change: 1 addition & 0 deletions config/initializers/listeners.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
Hyrax.publisher.subscribe(Hyrax::Listeners::MemberCleanupListener.new)
Hyrax.publisher.subscribe(Hyrax::Listeners::MetadataIndexListener.new)
Hyrax.publisher.subscribe(Hyrax::Listeners::ObjectLifecycleListener.new)
Hyrax.publisher.subscribe(Hyrax::Listeners::ProxyDepositListener.new)
Hyrax.publisher.subscribe(Hyrax::Listeners::TrophyCleanupListener.new)
Hyrax.publisher.subscribe(Hyrax::Listeners::WorkflowListener.new)

Expand Down
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 42c13ab

Please sign in to comment.