dor-workflow-service 1.7.6 → 1.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  module Dor
2
2
  module Workflow
3
3
  module Service
4
- VERSION = "1.7.6"
4
+ VERSION = '1.7.7'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Dor::WorkflowService do
4
+ before :each do
5
+ @logger1 = double('Logger')
6
+ allow(Dor::WorkflowService).to receive(:default_logger).and_return(@logger1)
7
+ end
8
+ describe '#configure' do
9
+ it 'pulls default_logger if not specified' do
10
+ expect(Dor::WorkflowService).to receive(:default_logger).and_return(@logger1)
11
+ Dor::WorkflowService.configure('https://dortest.stanford.edu/workflow')
12
+ end
13
+ it 'accepts :logger if specified' do
14
+ expect(Dor::WorkflowService).not_to receive(:default_logger)
15
+ Dor::WorkflowService.configure('https://dortest.stanford.edu/workflow', {:logger => @logger1})
16
+ end
17
+ end
18
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,9 +5,6 @@ require 'dor-workflow-service'
5
5
  require 'equivalent-xml'
6
6
  require 'equivalent-xml/rspec_matchers'
7
7
 
8
- Bundler.require(:default, :development)
9
-
10
8
  # RSpec.configure do |conf|
11
9
  # end
12
10
 
13
- Rails = Object.new unless defined? Rails
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Dor::WorkflowService do
4
-
5
4
  let(:wf_xml) { <<-EOXML
6
5
  <workflow id="etdSubmitWF">
7
6
  <process name="register-object" status="completed" attempts="1" />
@@ -26,131 +25,130 @@ describe Dor::WorkflowService do
26
25
  }
27
26
 
28
27
  before(:each) do
29
- @repo = 'dor'
28
+ @repo = 'dor'
30
29
  @druid = 'druid:123'
31
-
32
- @mock_logger = double('logger').as_null_object
33
- allow(Rails).to receive(:logger).and_return(@mock_logger)
34
-
35
30
  @mock_resource = double('mock_rest_client_resource')
31
+ @mock_logger = double('Logger')
36
32
  allow(@mock_resource).to receive(:[]).and_return(@mock_resource)
37
33
  allow(@mock_resource).to receive(:options).and_return( {} )
34
+ allow(@mock_resource).to receive(:url).and_return( 'https://dortest.stanford.edu/workflow' )
35
+ allow(@mock_logger).to receive(:info)
38
36
  allow(RestClient::Resource).to receive(:new).and_return(@mock_resource)
37
+ allow(Dor::WorkflowService).to receive(:default_logger).and_return(@mock_logger)
39
38
  Dor::WorkflowService.configure 'https://dortest.stanford.edu/workflow'
40
39
  end
41
40
 
42
- describe "#create_workflow" do
43
- it "should pass workflow xml to the DOR workflow service and return the URL to the workflow" do
44
- expect(@mock_resource).to receive(:put).with(wf_xml_label, anything()).and_return('')
41
+ describe '#create_workflow' do
42
+ it 'should pass workflow xml to the DOR workflow service and return the URL to the workflow' do
43
+ expect(@mock_resource).to receive(:put).with(wf_xml_label, anything).and_return('')
45
44
  Dor::WorkflowService.create_workflow(@repo, @druid, 'etdSubmitWF', wf_xml)
46
45
  end
47
46
 
48
- it "should log an error and return false if the PUT to the DOR workflow service throws an exception" do
49
- ex = Exception.new("exception thrown")
50
- expect(@mock_resource).to receive(:put).and_raise(ex)
51
- expect{ Dor::WorkflowService.create_workflow(@repo, @druid, 'etdSubmitWF', wf_xml) }.to raise_error(Exception, "exception thrown")
47
+ it 'should log an error and retry upon a targetted RestClient exception, raise on an unexpected Exception' do
48
+ ex = RestClient::Exception.new(nil, 418)
49
+ ex.message = "I'm A Teapot"
50
+ runs = 0
51
+ expect(@mock_resource).to receive(:put).twice {
52
+ runs += 1
53
+ raise ex if runs == 1
54
+ raise Exception.new('Something Else Happened') if runs == 2
55
+ }
56
+ expect(@mock_logger).to receive(:warn).with(/\[Attempt 1\] RestClient::Exception: #{ex.message}/)
57
+ expect{ Dor::WorkflowService.create_workflow(@repo, @druid, 'etdSubmitWF', wf_xml) }.to raise_error(Exception, 'Something Else Happened')
52
58
  end
53
59
 
54
- it "sets the create-ds param to the value of the passed in options hash" do
60
+ it 'sets the create-ds param to the value of the passed in options hash' do
55
61
  expect(@mock_resource).to receive(:put).with(wf_xml_label, :content_type => 'application/xml',
56
62
  :params => {'create-ds' => false}).and_return('')
57
63
  Dor::WorkflowService.create_workflow(@repo, @druid, 'etdSubmitWF', wf_xml, :create_ds => false)
58
64
  end
59
65
 
60
- it "adds lane_id attributes to all steps if passed in as an option" do
61
-
66
+ it 'adds lane_id attributes to all steps if passed in as an option' do
67
+ skip 'test not implemented'
62
68
  end
63
-
64
69
  end
65
70
 
66
- describe "#add_lane_id_to_workflow_xml" do
67
-
68
- it "adds laneId attributes to all process elements" do
71
+ describe '#add_lane_id_to_workflow_xml' do
72
+ it 'adds laneId attributes to all process elements' do
69
73
  expected = <<-XML
70
74
  <workflow id="etdSubmitWF">
71
- <process name="register-object" status="completed" attempts="1" laneId="lane1"/>
72
- <process name="submit" status="waiting" laneId="lane1"/>
73
- <process name="reader-approval" status="waiting" laneId="lane1"/>
74
- <process name="registrar-approval" status="waiting" laneId="lane1"/>
75
- <process name="start-accession" status="waiting" laneId="lane1"/>
75
+ <process name="register-object" status="completed" attempts="1" laneId="lane1"/>
76
+ <process name="submit" status="waiting" laneId="lane1"/>
77
+ <process name="reader-approval" status="waiting" laneId="lane1"/>
78
+ <process name="registrar-approval" status="waiting" laneId="lane1"/>
79
+ <process name="start-accession" status="waiting" laneId="lane1"/>
76
80
  </workflow>
77
81
  XML
78
-
79
82
  expect(Dor::WorkflowService.send(:add_lane_id_to_workflow_xml, 'lane1', wf_xml)).to be_equivalent_to(expected)
80
83
  end
81
84
  end
82
85
 
83
- describe "#update_workflow_status" do
84
- before(:each) do
86
+ describe '#update_workflow_status' do
87
+ before :each do
85
88
  @xml_re = /name="reader-approval"/
86
89
  end
87
90
 
88
- it "should update workflow status and return true if successful" do
91
+ it 'should update workflow status and return true if successful' do
89
92
  built_xml = "<?xml version=\"1.0\"?>\n<process name=\"reader-approval\" status=\"completed\" elapsed=\"0\" note=\"annotation\" version=\"2\" laneId=\"lane2\"/>\n"
90
93
  expect(@mock_resource).to receive(:put).with(built_xml, { :content_type => 'application/xml' }).and_return('')
91
- expect(Dor::WorkflowService.update_workflow_status(@repo, @druid, "etdSubmitWF", "reader-approval", "completed", :version => 2, :note => 'annotation', :lane_id => 'lane2')).to be true
94
+ expect(Dor::WorkflowService.update_workflow_status(@repo, @druid, 'etdSubmitWF', 'reader-approval', 'completed', :version => 2, :note => 'annotation', :lane_id => 'lane2')).to be true
92
95
  end
93
96
 
94
- it "should return false if the PUT to the DOR workflow service throws an exception" do
95
- ex = Exception.new("exception thrown")
97
+ it 'should return false if the PUT to the DOR workflow service throws an exception' do
98
+ ex = Exception.new('exception thrown')
96
99
  expect(@mock_resource).to receive(:put).with(@xml_re, { :content_type => 'application/xml' }).and_raise(ex)
97
- expect{ Dor::WorkflowService.update_workflow_status(@repo, @druid, "etdSubmitWF", "reader-approval", "completed") }.to raise_error(Exception, "exception thrown")
100
+ expect{ Dor::WorkflowService.update_workflow_status(@repo, @druid, 'etdSubmitWF', 'reader-approval', 'completed') }.to raise_error(Exception, 'exception thrown')
98
101
  end
99
102
 
100
- it "performs a conditional update when current-status is passed as a parameter" do
101
- expect(@mock_resource).to receive(:[]).with("dor/objects/druid:123/workflows/etdSubmitWF/reader-approval?current-status=queued")
103
+ it 'performs a conditional update when current-status is passed as a parameter' do
104
+ expect(@mock_resource).to receive(:[]).with('dor/objects/druid:123/workflows/etdSubmitWF/reader-approval?current-status=queued')
102
105
  expect(@mock_resource).to receive(:put).with(@xml_re, { :content_type => 'application/xml' }).and_return('')
103
- expect(Dor::WorkflowService.update_workflow_status(@repo, @druid, "etdSubmitWF", "reader-approval", "completed", :version => 2, :note => 'annotation', :lane_id => 'lane1', :current_status => 'queued')).to be true
106
+ expect(Dor::WorkflowService.update_workflow_status(@repo, @druid, 'etdSubmitWF', 'reader-approval', 'completed', :version => 2, :note => 'annotation', :lane_id => 'lane1', :current_status => 'queued')).to be true
104
107
  end
105
108
  end
106
109
 
107
- describe "#update_workflow_error_status" do
108
- it "should update workflow status to error and return true if successful" do
110
+ describe '#update_workflow_error_status' do
111
+ it 'should update workflow status to error and return true if successful' do
109
112
  expect(@mock_resource).to receive(:put).with(/status="error" errorMessage="Some exception" errorText="The optional stacktrace"/, { :content_type => 'application/xml' }).and_return('')
110
- Dor::WorkflowService.update_workflow_error_status(@repo, @druid, "etdSubmitWF", "reader-approval", "Some exception", :error_text =>"The optional stacktrace")
113
+ Dor::WorkflowService.update_workflow_error_status(@repo, @druid, 'etdSubmitWF', 'reader-approval', 'Some exception', :error_text =>'The optional stacktrace')
111
114
  end
112
-
113
- it "should return false if the PUT to the DOR workflow service throws an exception" do
114
- ex = Exception.new("exception thrown")
115
+ it 'should return false if the PUT to the DOR workflow service throws an exception' do
116
+ ex = Exception.new('exception thrown')
115
117
  expect(@mock_resource).to receive(:put).with(/status="completed"/, { :content_type => 'application/xml' }).and_raise(ex)
116
- expect{ Dor::WorkflowService.update_workflow_status(@repo, @druid, "etdSubmitWF", "reader-approval", "completed") }.to raise_error(Exception, "exception thrown")
118
+ expect{ Dor::WorkflowService.update_workflow_status(@repo, @druid, 'etdSubmitWF', 'reader-approval', 'completed') }.to raise_error(Exception, 'exception thrown')
117
119
  end
118
120
  end
119
121
 
120
- describe "#get_workflow_status" do
121
- it "parses workflow xml and returns status as a string" do
122
+ describe '#get_workflow_status' do
123
+ it 'parses workflow xml and returns status as a string' do
122
124
  expect(@mock_resource).to receive(:get).and_return('<process name="registrar-approval" status="completed" />')
123
125
  expect(Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'etdSubmitWF', 'registrar-approval')).to eq('completed')
124
126
  end
125
-
126
- it "should throw an exception if it fails for any reason" do
127
- ex = Exception.new("exception thrown")
127
+ it 'should throw an exception if it fails for any reason' do
128
+ ex = Exception.new('exception thrown')
128
129
  expect(@mock_resource).to receive(:get).and_raise(ex)
129
-
130
- expect{ Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'etdSubmitWF', 'registrar-approval') }.to raise_error(Exception, "exception thrown")
130
+ expect{ Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'etdSubmitWF', 'registrar-approval') }.to raise_error(Exception, 'exception thrown')
131
131
  end
132
-
133
- it "should throw an exception if it cannot parse the response" do
132
+ it 'should throw an exception if it cannot parse the response' do
134
133
  expect(@mock_resource).to receive(:get).and_return('something not xml')
135
134
  expect{ Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'etdSubmitWF', 'registrar-approval') }.to raise_error(Exception, "Unable to parse response:\nsomething not xml")
136
135
  end
137
- it "should return nil if the workflow/process combination doesnt exist" do
136
+ it 'should return nil if the workflow/process combination doesnt exist' do
138
137
  expect(@mock_resource).to receive(:get).and_return('<process name="registrar-approval" status="completed" />')
139
- expect(Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'accessionWF', 'publish')).to eq(nil)
138
+ expect(Dor::WorkflowService.get_workflow_status('dor', 'druid:123', 'accessionWF', 'publish')).to be_nil
140
139
  end
141
-
142
140
  end
143
141
 
144
- describe "#get_workflow_xml" do
145
- it "returns the xml for a given repository, druid, and workflow" do
142
+ describe '#get_workflow_xml' do
143
+ it 'returns the xml for a given repository, druid, and workflow' do
146
144
  xml = '<workflow id="etdSubmitWF"><process name="registrar-approval" status="completed" /></workflow>'
147
145
  expect(@mock_resource).to receive(:get).and_return(xml)
148
146
  expect(Dor::WorkflowService.get_workflow_xml('dor', 'druid:123', 'etdSubmitWF')).to eq(xml)
149
147
  end
150
148
  end
151
149
 
152
- describe "#get_lifecycle" do
153
- it "returns a Time object reprenting when the milestone was reached" do
150
+ describe '#get_lifecycle' do
151
+ it 'returns a Time object reprenting when the milestone was reached' do
154
152
  xml = <<-EOXML
155
153
  <lifecycle objectId="druid:ct011cv6501">
156
154
  <milestone date="2010-04-27T11:34:17-0700">registered</milestone>
@@ -166,104 +164,96 @@ describe Dor::WorkflowService do
166
164
  expect(@mock_resource).to receive(:get).and_return('<lifecycle/>')
167
165
  expect(Dor::WorkflowService.get_lifecycle('dor', 'druid:abc', 'inprocess')).to be_nil
168
166
  end
169
-
170
167
  end
171
168
 
172
- describe "#get_objects_for_workstep" do
169
+ describe '#get_objects_for_workstep' do
173
170
  before :each do
174
- @repository = "dor"
175
- @workflow = "googleScannedBookWF"
176
- @completed = "google-download"
177
- @waiting = "process-content"
171
+ @repository = 'dor'
172
+ @workflow = 'googleScannedBookWF'
173
+ @completed = 'google-download'
174
+ @waiting = 'process-content'
178
175
  end
179
176
 
180
- context "a query with one step completed and one waiting" do
181
- it "creates the URI string with only the one completed step" do
177
+ context 'a query with one step completed and one waiting' do
178
+ it 'creates the URI string with only the one completed step' do
182
179
  expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@repository}:#{@workflow}:#{@waiting}&completed=#{@repository}:#{@workflow}:#{@completed}&lane-id=default")
183
180
  expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/><object id="druid:ab123de9012"/></objects>})
184
- expect(Dor::WorkflowService.get_objects_for_workstep(@completed, @waiting, 'default', :default_repository => @repository, :default_workflow => @workflow)).to eq(['druid:ab123de4567','druid:ab123de9012'])
181
+ expect(Dor::WorkflowService.get_objects_for_workstep(@completed, @waiting, 'default', :default_repository => @repository, :default_workflow => @workflow)).to eq(['druid:ab123de4567', 'druid:ab123de9012'])
185
182
  end
186
183
  end
187
184
 
188
- context "a query with TWO steps completed and one waiting" do
189
- it "creates the URI string with the two completed steps correctly" do
190
- second_completed="google-convert"
185
+ context 'a query with TWO steps completed and one waiting' do
186
+ it 'creates the URI string with the two completed steps correctly' do
187
+ second_completed = 'google-convert'
191
188
  expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@repository}:#{@workflow}:#{@waiting}&completed=#{@repository}:#{@workflow}:#{@completed}&completed=#{@repository}:#{@workflow}:#{second_completed}&lane-id=default")
192
189
  expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/><object id="druid:ab123de9012"/></objects>})
193
- expect(Dor::WorkflowService.get_objects_for_workstep([@completed,second_completed], @waiting, 'default', :default_repository => @repository, :default_workflow => @workflow)).to eq(['druid:ab123de4567','druid:ab123de9012'])
190
+ expect(Dor::WorkflowService.get_objects_for_workstep([@completed, second_completed], @waiting, 'default', :default_repository => @repository, :default_workflow => @workflow)).to eq(['druid:ab123de4567', 'druid:ab123de9012'])
194
191
  end
195
192
  end
196
193
 
197
- context "a query using qualified workflow names for completed and waiting" do
198
- it "creates the URI string with the two completed steps across repositories correctly" do
199
- qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
200
- qualified_completed = "#{@repository}:#{@workflow}:#{@completed}"
201
- repo2 = "sdr"
202
- workflow2 = "sdrIngestWF"
203
- completed2="complete-deposit"
204
- completed3="ingest-transfer"
205
- qualified_completed2 = "#{repo2}:#{workflow2}:#{completed2}"
206
- qualified_completed3 = "#{repo2}:#{workflow2}:#{completed3}"
207
- expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{qualified_waiting}&completed=#{qualified_completed}&completed=#{qualified_completed2}&completed=#{qualified_completed3}&lane-id=default")
208
- expect(@mock_resource).to receive(:get).and_return(%{<objects count="2"><object id="druid:ab123de4567"/><object id="druid:ab123de9012"/></objects>})
209
- expect(Dor::WorkflowService.get_objects_for_workstep([qualified_completed, qualified_completed2, qualified_completed3], qualified_waiting)).to eq(['druid:ab123de4567', 'druid:ab123de9012'])
194
+ context 'a query using qualified workflow names for completed and waiting' do
195
+ before :each do
196
+ @qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
197
+ @qualified_completed = "#{@repository}:#{@workflow}:#{@completed}"
210
198
  end
211
199
 
212
- it "same but with lane_id" do
213
- qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
214
- qualified_completed = "#{@repository}:#{@workflow}:#{@completed}"
215
- repo2 = "sdr"
216
- workflow2 = "sdrIngestWF"
217
- completed2="complete-deposit"
218
- completed3="ingest-transfer"
219
- qualified_completed2 = "#{repo2}:#{workflow2}:#{completed2}"
220
- qualified_completed3 = "#{repo2}:#{workflow2}:#{completed3}"
221
- expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{qualified_waiting}&completed=#{qualified_completed}&completed=#{qualified_completed2}&completed=#{qualified_completed3}&lane-id=lane1")
222
- expect(@mock_resource).to receive(:get).and_return(%{<objects count="2"><object id="druid:ab123de4567"/><object id="druid:ab123de9012"/></objects>})
223
- expect(Dor::WorkflowService.get_objects_for_workstep([qualified_completed, qualified_completed2, qualified_completed3], qualified_waiting, "lane1")).to eq([ 'druid:ab123de4567', 'druid:ab123de9012'])
200
+ RSpec.shared_examples 'lane-aware' do
201
+ it 'creates the URI string with the two completed steps across repositories correctly' do
202
+ qualified_completed2 = "sdr:sdrIngestWF:complete-deposit"
203
+ qualified_completed3 = "sdr:sdrIngestWF:ingest-transfer"
204
+ expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@qualified_waiting}&completed=#{@qualified_completed}&completed=#{qualified_completed2}&completed=#{qualified_completed3}&lane-id=#{laneid}")
205
+ expect(@mock_resource).to receive(:get).and_return(%{<objects count="2"><object id="druid:ab123de4567"/><object id="druid:ab123de9012"/></objects>})
206
+ args = [[@qualified_completed, qualified_completed2, qualified_completed3], @qualified_waiting]
207
+ args << laneid if laneid != 'default'
208
+ expect(Dor::WorkflowService.get_objects_for_workstep(*args)).to eq(['druid:ab123de4567', 'druid:ab123de9012'])
209
+ end
224
210
  end
225
211
 
226
- it "creates the URI string with only one completed step passed in as a String" do
227
- qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
228
- qualified_completed = "#{@repository}:#{@workflow}:#{@completed}"
229
-
230
- expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{qualified_waiting}&completed=#{qualified_completed}&lane-id=default")
231
- expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/></objects>})
232
- expect(Dor::WorkflowService.get_objects_for_workstep(qualified_completed, qualified_waiting)).to eq(['druid:ab123de4567'])
212
+ describe 'default lane_id' do
213
+ it_behaves_like 'lane-aware' do
214
+ let(:laneid) { 'default' }
215
+ end
233
216
  end
234
-
235
- it "creates the URI string without any completed steps, only waiting" do
236
- qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
237
-
238
- expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{qualified_waiting}&lane-id=default")
239
- expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/></objects>})
240
- expect(Dor::WorkflowService.get_objects_for_workstep(nil, qualified_waiting)).to eq(['druid:ab123de4567'])
217
+ describe 'explicit lane_id' do
218
+ it_behaves_like 'lane-aware' do
219
+ let(:laneid) { 'lane1' }
220
+ end
241
221
  end
242
222
 
243
- it "same but with lane_id" do
244
- qualified_waiting = "#{@repository}:#{@workflow}:#{@waiting}"
245
-
246
- expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{qualified_waiting}&lane-id=lane1")
247
- expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/></objects>})
248
- expect(Dor::WorkflowService.get_objects_for_workstep(nil, qualified_waiting, "lane1")).to eq([ 'druid:ab123de4567' ])
223
+ describe 'URI string creation' do
224
+ before :each do
225
+ expect(@mock_resource).to receive(:get).and_return(%{<objects count="1"><object id="druid:ab123de4567"/></objects>})
226
+ end
227
+ it 'with only one completed step passed in as a String' do
228
+ expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@qualified_waiting}&completed=#{@qualified_completed}&lane-id=default")
229
+ expect(Dor::WorkflowService.get_objects_for_workstep(@qualified_completed, @qualified_waiting)).to eq(['druid:ab123de4567'])
230
+ end
231
+ it 'without any completed steps, only waiting' do
232
+ expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@qualified_waiting}&lane-id=default")
233
+ expect(Dor::WorkflowService.get_objects_for_workstep(nil, @qualified_waiting)).to eq(['druid:ab123de4567'])
234
+ end
235
+ it 'same but with lane_id' do
236
+ expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{@qualified_waiting}&lane-id=lane1")
237
+ expect(Dor::WorkflowService.get_objects_for_workstep(nil, @qualified_waiting, 'lane1')).to eq([ 'druid:ab123de4567' ])
238
+ end
249
239
  end
250
240
  end
251
241
  end
252
242
 
253
- context "get empty workflow queue" do
254
- it "returns an empty list if it encounters an empty workflow queue" do
255
- repository = "dor"
256
- workflow = "googleScannedBookWF"
257
- completed = "google-download"
258
- waiting = "process-content"
243
+ context 'get empty workflow queue' do
244
+ it 'returns an empty list if it encounters an empty workflow queue' do
245
+ repository = 'dor'
246
+ workflow = 'googleScannedBookWF'
247
+ completed = 'google-download'
248
+ waiting = 'process-content'
259
249
  expect(@mock_resource).to receive(:[]).with("workflow_queue?waiting=#{repository}:#{workflow}:#{waiting}&completed=#{repository}:#{workflow}:#{completed}&lane-id=default")
260
250
  expect(@mock_resource).to receive(:get).and_return(%{<objects count="0"/>})
261
251
  expect(Dor::WorkflowService.get_objects_for_workstep(completed, waiting, 'default', :default_repository => repository, :default_workflow => workflow)).to eq([])
262
252
  end
263
253
  end
264
254
 
265
- describe "#delete_workflow" do
266
- it "sends a delete request to the workflow service" do
255
+ describe '#delete_workflow' do
256
+ it 'sends a delete request to the workflow service' do
267
257
  expect(@mock_resource).to receive(:[]).with("#{@repo}/objects/#{@druid}/workflows/accessionWF")
268
258
  expect(@mock_resource).to receive(:delete)
269
259
  Dor::WorkflowService.delete_workflow(@repo, @druid, 'accessionWF')
@@ -271,17 +261,17 @@ describe Dor::WorkflowService do
271
261
  end
272
262
  describe 'get_milestones' do
273
263
  it 'should include the version in with the milestones' do
274
- xml='<?xml version="1.0" encoding="UTF-8"?><lifecycle objectId="druid:gv054hp4128"><milestone date="2012-01-26T21:06:54-0800" version="2">published</milestone></lifecycle>'
275
- xml=Nokogiri::XML(xml)
264
+ xml = '<?xml version="1.0" encoding="UTF-8"?><lifecycle objectId="druid:gv054hp4128"><milestone date="2012-01-26T21:06:54-0800" version="2">published</milestone></lifecycle>'
265
+ xml = Nokogiri::XML(xml)
276
266
  allow(Dor::WorkflowService).to receive(:query_lifecycle).and_return(xml)
277
- milestones=Dor::WorkflowService.get_milestones(@repo, @druid)
278
- expect(milestones.first[:milestone]).to eq("published")
279
- expect(milestones.first[:version]).to eq("2")
267
+ milestones = Dor::WorkflowService.get_milestones(@repo, @druid)
268
+ expect(milestones.first[:milestone]).to eq('published')
269
+ expect(milestones.first[:version]).to eq('2')
280
270
  end
281
271
  end
282
272
 
283
- describe ".get_active_workflows" do
284
- it "it returns an array of active workflows only" do
273
+ describe '.get_active_workflows' do
274
+ it 'it returns an array of active workflows only' do
285
275
  xml = <<-XML
286
276
  <workflows objectId="druid:mw971zk1113">
287
277
  <workflow repository="dor" objectId="druid:mw971zk1113" id="accessionWF">
@@ -293,67 +283,86 @@ describe Dor::WorkflowService do
293
283
  </workflow>
294
284
  </workflows>
295
285
  XML
296
-
297
286
  allow(Dor::WorkflowService).to receive(:get_workflow_xml) { xml }
298
287
  expect(Dor::WorkflowService.get_active_workflows('dor', 'druid:mw971zk1113')).to eq(['accessionWF'])
299
288
  end
300
289
  end
301
290
 
302
- describe "#close_version" do
303
- it "calls the versionClose endpoint with druid" do
304
- expect(@mock_resource).to receive(:[]).with("dor/objects/druid:123/versionClose").and_return(@mock_resource)
291
+ describe '#close_version' do
292
+ it 'calls the versionClose endpoint with druid' do
293
+ expect(@mock_resource).to receive(:[]).with('dor/objects/druid:123/versionClose').and_return(@mock_resource)
305
294
  expect(@mock_resource).to receive(:post).with('').and_return('')
306
295
  Dor::WorkflowService.close_version(@repo, @druid)
307
296
  end
308
297
 
309
- it "optionally prevents creation of accessionWF" do
310
- expect(@mock_resource).to receive(:[]).with("dor/objects/druid:123/versionClose?create-accession=false").and_return(@mock_resource)
298
+ it 'optionally prevents creation of accessionWF' do
299
+ expect(@mock_resource).to receive(:[]).with('dor/objects/druid:123/versionClose?create-accession=false').and_return(@mock_resource)
311
300
  expect(@mock_resource).to receive(:post).with('').and_return('')
312
301
  Dor::WorkflowService.close_version(@repo, @druid, false)
313
302
  end
314
303
  end
315
304
 
316
- describe ".get_stale_queued_workflows" do
317
- it "returns an Array of Hashes containing each workflow step" do
305
+ describe '.get_stale_queued_workflows' do
306
+ it 'returns an Array of Hashes containing each workflow step' do
318
307
  xml = <<-XML
319
308
  <workflows>
320
309
  <workflow laneId="lane1" note="annotation" lifecycle="in-process" errorText="stacktrace" errorMessage="NullPointerException" elapsed="1.173" repository="dor" attempts="0" datetime="2008-11-15T13:30:00-0800" status="waiting" process="content-metadata" name="accessionWF" druid="dr:123"/>
321
310
  <workflow laneId="lane2" note="annotation" lifecycle="in-process" errorText="stacktrace" errorMessage="NullPointerException" elapsed="1.173" repository="dor" attempts="0" datetime="2008-11-15T13:30:00-0800" status="waiting" process="jp2-create" name="assemblyWF" druid="dr:456"/>
322
311
  </workflows>
323
312
  XML
324
- expect(@mock_resource).to receive(:[]).with("workflow_queue/all_queued?repository=dor&hours-ago=24&limit=100")
313
+ expect(@mock_resource).to receive(:[]).with('workflow_queue/all_queued?repository=dor&hours-ago=24&limit=100')
325
314
  expect(@mock_resource).to receive(:get).and_return(xml)
326
-
327
315
  ah = Dor::WorkflowService.get_stale_queued_workflows 'dor', :hours_ago => 24, :limit => 100
328
- expected = [ { :workflow => 'accessionWF', :step => 'content-metadata', :druid => 'dr:123', :lane_id => 'lane1'},
329
- { :workflow => 'assemblyWF', :step => 'jp2-create', :druid => 'dr:456', :lane_id => 'lane2'} ]
316
+ expected = [
317
+ { :workflow => 'accessionWF', :step => 'content-metadata', :druid => 'dr:123', :lane_id => 'lane1' },
318
+ { :workflow => 'assemblyWF', :step => 'jp2-create', :druid => 'dr:456', :lane_id => 'lane2' }
319
+ ]
330
320
  expect(ah).to eql(expected)
331
321
  end
332
322
  end
333
323
 
334
- describe ".count_stale_queued_workflows" do
335
- it "returns the number of queued workflow steps" do
336
- expect(@mock_resource).to receive(:[]).with("workflow_queue/all_queued?repository=dor&hours-ago=48&count-only=true")
324
+ describe '.count_stale_queued_workflows' do
325
+ it 'returns the number of queued workflow steps' do
326
+ expect(@mock_resource).to receive(:[]).with('workflow_queue/all_queued?repository=dor&hours-ago=48&count-only=true')
337
327
  expect(@mock_resource).to receive(:get).and_return(%{<objects count="10"/>})
338
-
339
328
  expect(Dor::WorkflowService.count_stale_queued_workflows('dor', :hours_ago => 48)).to eq(10)
340
329
  end
341
330
  end
342
331
 
343
- describe ".get_lane_ids" do
344
- it "returns the lane ids for a given workflow step" do
332
+ describe '.get_lane_ids' do
333
+ it 'returns the lane ids for a given workflow step' do
345
334
  xml = <<-XML
346
335
  <lanes>
347
336
  <lane id="lane1"/>
348
337
  <lane id="lane2"/>
349
338
  </lanes>
350
339
  XML
351
-
352
- expect(@mock_resource).to receive(:[]).with("workflow_queue/lane_ids?step=dor:accessionWF:shelve")
340
+ expect(@mock_resource).to receive(:[]).with('workflow_queue/lane_ids?step=dor:accessionWF:shelve')
353
341
  expect(@mock_resource).to receive(:get).and_return(xml)
354
-
355
342
  expect(Dor::WorkflowService.get_lane_ids('dor', 'accessionWF', 'shelve')).to eq(%w(lane1 lane2))
356
343
  end
357
344
  end
358
345
 
346
+ describe 'protected method' do
347
+ describe '#build_queued_uri' do
348
+ it 'does something' do
349
+ skip 'test unimplemented'
350
+ end
351
+ end
352
+ describe '#parse_queued_workflows_response' do
353
+ it 'does something' do
354
+ skip 'test unimplemented'
355
+ end
356
+ end
357
+ describe '#add_lane_id_to_workflow_xml' do
358
+ it 'does something' do
359
+ skip 'test unimplemented'
360
+ end
361
+ end
362
+ describe '#count_objects_in_step' do
363
+ it 'does something' do
364
+ skip 'test unimplemented'
365
+ end
366
+ end
367
+ end
359
368
  end