From 2500d2d3efd419cdbff132cfcdcc16bb9ca181be Mon Sep 17 00:00:00 2001 From: tamsin johnson Date: Tue, 29 Aug 2023 13:48:44 -0700 Subject: [PATCH 1/2] make `Hyrax::Identifier::Dispatcher` support Valkryie adds support for valkyrie to `Hyrax::Identifier::Dispatcher`. add legacy ActiveFedora tests and flag as `:active_fedora` --- app/services/hyrax/identifier/dispatcher.rb | 12 ++++++++-- .../hyrax/identifier/dispatcher_spec.rb | 24 ++++++++++++------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/services/hyrax/identifier/dispatcher.rb b/app/services/hyrax/identifier/dispatcher.rb index 119e0cb1b7..e89f545de9 100644 --- a/app/services/hyrax/identifier/dispatcher.rb +++ b/app/services/hyrax/identifier/dispatcher.rb @@ -53,8 +53,16 @@ def assign_for(object:, attribute: :identifier) # # @see #assign_for def assign_for!(object:, attribute: :identifier) - assign_for(object: object, attribute: attribute).save! - object + result = assign_for(object: object, attribute: attribute) + + case result + when Valkyrie::Resource + Hyrax.persister.save(resource: result) + else + result.save + end + + result end end end diff --git a/spec/services/hyrax/identifier/dispatcher_spec.rb b/spec/services/hyrax/identifier/dispatcher_spec.rb index 1e0afb762c..7044fb2a02 100644 --- a/spec/services/hyrax/identifier/dispatcher_spec.rb +++ b/spec/services/hyrax/identifier/dispatcher_spec.rb @@ -3,7 +3,7 @@ RSpec.describe Hyrax::Identifier::Dispatcher do subject(:dispatcher) { described_class.new(registrar: fake_registrar.new) } let(:identifier) { 'moomin/123/abc' } - let(:object) { build(:generic_work) } + let(:object) { FactoryBot.build(:monograph) } let(:fake_registrar) do Class.new do @@ -16,10 +16,6 @@ def register!(*) end shared_examples 'performs identifier assignment' do |method| - it 'returns the same object' do - expect(dispatcher.public_send(method, object: object)).to eql object - end - it 'assigns to the identifier attribute by default' do dispatcher.public_send(method, object: object) expect(object.identifier).to contain_exactly(identifier) @@ -59,10 +55,20 @@ def register!(*) include_examples 'performs identifier assignment', :assign_for! it 'saves the object' do - expect { dispatcher.assign_for!(object: object) } - .to change { object.new_record? } - .from(true) - .to(false) + expect(dispatcher.assign_for!(object: object)).to be_persisted + end + + context 'with an ActiveFedora model', :active_fedora do + let(:object) { FactoryBot.build(:work) } + + include_examples 'performs identifier assignment', :assign_for! + + it 'saves the object' do + expect { dispatcher.assign_for!(object: object) } + .to change { object.new_record? } + .from(true) + .to(false) + end end end end From 1461fdbee23b8a741859b392b9dceb1c86cdcfc5 Mon Sep 17 00:00:00 2001 From: Daniel Pierce Date: Wed, 13 Sep 2023 23:30:38 -0400 Subject: [PATCH 2/2] Return the persisted resource --- app/services/hyrax/identifier/dispatcher.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/services/hyrax/identifier/dispatcher.rb b/app/services/hyrax/identifier/dispatcher.rb index e89f545de9..80284d2d84 100644 --- a/app/services/hyrax/identifier/dispatcher.rb +++ b/app/services/hyrax/identifier/dispatcher.rb @@ -60,9 +60,8 @@ def assign_for!(object:, attribute: :identifier) Hyrax.persister.save(resource: result) else result.save + result end - - result end end end