diff --git a/app/lib/pre_assembly/digital_object.rb b/app/lib/pre_assembly/digital_object.rb index efc6c04ef..efef9de4f 100644 --- a/app/lib/pre_assembly/digital_object.rb +++ b/app/lib/pre_assembly/digital_object.rb @@ -62,8 +62,7 @@ def pre_assemble stage_files generate_content_metadata generate_media_project_technical_metadata if content_md_creation == 'media_cm_style' - create_new_version if openable? - initialize_assembly_workflow + start_accession log " - pre_assemble(#{pid}) finished" { status: 'success' } end @@ -149,28 +148,14 @@ def current_object_version @current_object_version ||= version_client.current.to_i end - # When reaccessioning, we need to first open and close a version without kicking off accessionWF - def create_new_version - version_client.open( - significance: 'major', - description: 'pre-assembly re-accession', - opening_user_name: bundle.bundle_context.user.sunet_id - ) - version_client.close(start_accession: false) - end - - #### - # Initialize the assembly workflow. - #### - - # Call web service to add assemblyWF to the object in DOR. - def initialize_assembly_workflow - workflow_client.create_workflow_by_name(druid.druid, 'assemblyWF', version: current_object_version) - end - - def workflow_client - logger = Logger.new(Settings.workflow.logfile, Settings.workflow.shift_age) - Dor::Workflow::Client.new(url: Settings.workflow_url, logger: logger, timeout: Settings.workflow.timeout) + def start_accession + version_params = + { + significance: 'major', + description: 'pre-assembly re-accession', + opening_user_name: bundle.bundle_context.user.sunet_id + } + object_client.accession(version_params) end end end diff --git a/config/settings.yml b/config/settings.yml index bc6177d7c..b720d1326 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -7,10 +7,3 @@ job_output_parent_dir: 'log/jobs' DOR_SERVICES: URL: 'http://localhost:3003' TOKEN: 'secret-token' - - -workflow_url: 'https://workflow-env.stanford.edu/workflow' -workflow: - logfile: 'log/workflow_service.log' - shift_age: 'weekly' - timeout: 60 diff --git a/spec/lib/pre_assembly/bundle_spec.rb b/spec/lib/pre_assembly/bundle_spec.rb index 985c8f2c6..abf6b2b19 100644 --- a/spec/lib/pre_assembly/bundle_spec.rb +++ b/spec/lib/pre_assembly/bundle_spec.rb @@ -33,7 +33,7 @@ let(:item) { instance_double(Cocina::Models::DRO, type: Cocina::Models::Vocab.image) } before do - allow_any_instance_of(PreAssembly::DigitalObject).to receive(:initialize_assembly_workflow) + allow_any_instance_of(PreAssembly::DigitalObject).to receive(:start_accession) allow(Dor::Services::Client).to receive(:object).and_return(dor_services_client_object) end diff --git a/spec/lib/pre_assembly/digital_object_spec.rb b/spec/lib/pre_assembly/digital_object_spec.rb index 4f0caa009..8fcdbb82e 100644 --- a/spec/lib/pre_assembly/digital_object_spec.rb +++ b/spec/lib/pre_assembly/digital_object_spec.rb @@ -34,13 +34,12 @@ def add_object_files(extension = 'tif') allow(object).to receive(:pid).and_return(pid) end - it 'does not call create_new_version for new_objects' do + it 'calls all methods needed to accession' do allow(object).to receive(:'openable?').and_return(false) allow(object).to receive(:current_object_version).and_return(1) expect(object).to receive(:stage_files) expect(object).to receive(:generate_content_metadata) - expect(object).not_to receive(:create_new_version) - expect(object).to receive(:initialize_assembly_workflow) + expect(object).to receive(:start_accession) object.pre_assemble end @@ -58,16 +57,6 @@ def add_object_files(extension = 'tif') message: "can't be opened for a new version; cannot re-accession when version > 1 unless object can be opened") end end - - it 'calls create_new_version for existing openable objects' do - allow(object).to receive(:'openable?').and_return(true) - allow(object).to receive(:current_object_version).and_return(2) - expect(object).to receive(:stage_files) - expect(object).to receive(:generate_content_metadata) - expect(object).to receive(:create_new_version) - expect(object).to receive(:initialize_assembly_workflow) - object.pre_assemble - end end describe '#stage_files' do @@ -301,51 +290,41 @@ def add_object_files(extension = 'tif') end end - describe '#create_new_version' do - let(:dor_services_client_object_version) { instance_double(Dor::Services::Client::ObjectVersion, open: true, close: true) } - let(:dor_services_client_object) { instance_double(Dor::Services::Client::Object, version: dor_services_client_object_version) } - let(:version_options) { { significance: 'major', description: 'pre-assembly re-accession', opening_user_name: object.bundle.bundle_context.user.sunet_id } } - - before do - allow(object).to receive(:druid).and_return(druid) - allow(Dor::Services::Client).to receive(:object).and_return(dor_services_client_object) - end - - it 'opens and closes an object version' do - expect(dor_services_client_object_version).to receive(:open).with(**version_options) - expect(dor_services_client_object_version).to receive(:close).with(start_accession: false) - object.send(:create_new_version) - end - end - - describe '#initialize_assembly_workflow' do - subject(:start_workflow) { object.send(:initialize_assembly_workflow) } - + describe '#start_accession' do + subject(:start_accession) { object.send(:start_accession) } + subject(:version_params) { + { + significance: 'major', + description: 'pre-assembly re-accession', + opening_user_name: bc.user.sunet_id + } + } before do allow(Dor::Services::Client).to receive(:object).and_return(object_client) - allow(Dor::Workflow::Client).to receive(:new).and_return(client) allow(object).to receive(:druid).and_return(druid) end - let(:client) { instance_double(Dor::Workflow::Client, create_workflow_by_name: true) } let(:version_client) { instance_double(Dor::Services::Client::ObjectVersion, current: '5') } let(:object_client) { instance_double(Dor::Services::Client::Object, version: version_client) } let(:service_url) { Settings.dor_services_url } context 'when api client is successful' do - it 'starts the assembly workflow' do - start_workflow - expect(client).to have_received(:create_workflow_by_name).with(druid.druid, 'assemblyWF', version: 5) + before do + allow(object_client).to receive(:accession).and_return(true) + end + it 'starts accession' do + start_accession + expect(object_client).to have_received(:accession).with(version_params) end end context 'when the api client raises' do before do - allow(client).to receive(:create_workflow_by_name).and_raise(StandardError) + allow(object_client).to receive(:accession).and_raise(StandardError) end it 'raises an exception' do - expect { start_workflow }.to raise_error(StandardError) + expect { start_accession }.to raise_error(StandardError) end end end