Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.

Commit

Permalink
Merge pull request #461 from sul-dlss/use-service
Browse files Browse the repository at this point in the history
Use the Dor::CreateWorkflowService
  • Loading branch information
jcoyne committed Dec 21, 2018
2 parents 7197ecf + db8f122 commit ca25924
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 13 deletions.
10 changes: 9 additions & 1 deletion lib/dor/services/registration_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def register_object(params = {})
workflow_priority = params[:workflow_priority] ? params[:workflow_priority].to_i : 0

seed_datastreams(Array(params[:seed_datastream]), new_item)
Array(params[:initiate_workflow]).each { |workflow_id| new_item.create_workflow(workflow_id, !new_item.new_record?, workflow_priority) }
initiate_workflow(workflows: Array(params[:initiate_workflow]), item: new_item, priority: workflow_priority)

new_item.class.ancestors.select { |x| x.respond_to?(:to_class_uri) && x != ActiveFedora::Base }.each do |parent_class|
new_item.add_relationship(:has_model, parent_class.to_class_uri)
Expand Down Expand Up @@ -179,6 +179,14 @@ def seed_datastreams(names, item)
end
end

def initiate_workflow(workflows:, item:, priority:)
workflows.each do |workflow_id|
Dor::CreateWorkflowService.create_workflow(item, name: workflow_id,
create_ds: !item.new_record?,
priority: priority)
end
end

def build_desc_metadata_from_label(new_item, label)
builder = Nokogiri::XML::Builder.new do |xml|
xml.mods(Dor::DescMetadataDS::MODS_HEADER_CONFIG) do
Expand Down
2 changes: 1 addition & 1 deletion lib/dor/services/sdr_ingest_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def self.transfer(dor_item, _agreement_id = nil)
bagger.create_tagfiles
verify_bag_structure(bag_dir)
# start SDR preservation workflow (but do not create the workflows datastream)
dor_item.create_workflow('preservationIngestWF', false)
CreateWorkflowService.create_workflow(dor_item, name: 'preservationIngestWF', create_ds: false)
rescue Exception => e
raise Dor::Exception, "Error exporting new object version to bag: #{e.message}"
end
Expand Down
4 changes: 2 additions & 2 deletions lib/dor/services/version_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ def open(opts = {})
k = :create_workflows_ds
if opts.key?(k)
# During local development, Hydrus (or another app w/ local Fedora) does not want to initialize workflows datastream.
work.create_workflow('versioningWF', opts[k])
CreateWorkflowService.create_workflow(work, name: 'versioningWF', create_ds: opts[k])
else
work.create_workflow('versioningWF')
CreateWorkflowService.create_workflow(work, name: 'versioningWF')
end

vmd_upd_info = opts[:vers_md_upd_info]
Expand Down
2 changes: 1 addition & 1 deletion spec/services/registration_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@
end

it 'sets workflow priority when passed in' do
expect_any_instance_of(Dor::Item).to receive(:create_workflow).with('digitizationWF', false, 50)
expect(Dor::CreateWorkflowService).to receive(:create_workflow).with(Dor::Item, name: 'digitizationWF', create_ds: false, priority: 50)
@params[:workflow_priority] = 50
@params[:initiate_workflow] = 'digitizationWF'
Dor::RegistrationService.register_object(@params)
Expand Down
12 changes: 6 additions & 6 deletions spec/services/sdr_ingest_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
require 'spec_helper'
require 'fileutils'

describe Dor::SdrIngestService do
before(:each) do
RSpec.describe Dor::SdrIngestService do
before do
@fixtures = fixtures = Pathname(File.dirname(__FILE__)).join('../fixtures')
Dor::Config.push! do
sdr.local_workspace_root fixtures.join('workspace').to_s
Expand All @@ -18,7 +18,7 @@
@agreement_id = 'druid:xx098yy7654'
end

after(:each) do
after do
Dor::Config.pop!
@export_dir.rmtree if @export_dir.exist? && @export_dir.basename.to_s == 'export'
end
Expand All @@ -35,7 +35,7 @@
end

describe 'get_datastream_content' do
before :each do
before do
@ds_name = 'myMetadata'
@mock_item = double('item')
@mock_datastream = double('datastream')
Expand All @@ -62,10 +62,10 @@
end

describe 'transfer' do
before :each do
before do
druid = 'druid:dd116zh0343'
@dor_item = double('dor_item')
expect(@dor_item).to receive(:create_workflow).with('preservationIngestWF', false)
expect(Dor::CreateWorkflowService).to receive(:create_workflow).with(@dor_item, name: 'preservationIngestWF', create_ds: false)
allow(@dor_item).to receive(:pid).and_return(druid)
signature_catalog = Moab::SignatureCatalog.read_xml_file(@fixtures.join('sdr_repo/dd116zh0343/v0001/manifests'))
@metadata_dir = @fixtures.join('workspace/dd/116/zh/0343/dd116zh0343/metadata')
Expand Down
4 changes: 2 additions & 2 deletions spec/services/version_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class VersionableItem < ActiveFedora::Base
allow(Dor::Config.workflow.client).to receive(:get_active_lifecycle).with('dor', druid, 'opened').and_return(nil)
allow(Dor::Config.workflow.client).to receive(:get_active_lifecycle).with('dor', druid, 'submitted').and_return(nil)
allow(Sdr::Client).to receive(:current_version).and_return(1)
allow(obj).to receive(:create_workflow).with('versioningWF')
allow(Dor::CreateWorkflowService).to receive(:create_workflow).with(obj, name: 'versioningWF')
allow(obj).to receive(:new_record?).and_return(false)
allow(vmd_ds).to receive(:save)
end
Expand All @@ -42,7 +42,7 @@ class VersionableItem < ActiveFedora::Base
expect(Dor::Config.workflow.client).to receive(:get_active_lifecycle).with('dor', druid, 'opened').and_return(nil)
expect(Dor::Config.workflow.client).to receive(:get_active_lifecycle).with('dor', druid, 'submitted').and_return(nil)
expect(Sdr::Client).to receive(:current_version).and_return(1)
expect(obj).to receive(:create_workflow).with('versioningWF')
expect(Dor::CreateWorkflowService).to receive(:create_workflow).with(obj, name: 'versioningWF')
expect(obj).to receive(:new_record?).and_return(false)
expect(vmd_ds).to receive(:save)
expect(vmd_ds.ng_xml.to_xml).to match(/Initial Version/)
Expand Down

0 comments on commit ca25924

Please sign in to comment.