dor-workflow-client 7.1.0 → 7.3.0
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/lib/dor/workflow/client/status.rb +13 -15
- data/lib/dor/workflow/client/version.rb +1 -1
- data/lib/dor/workflow/response/workflow.rb +18 -3
- data/spec/dor/workflow/client/status_spec.rb +3 -3
- data/spec/dor/workflow/response/workflow_spec.rb +58 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f68410646d6db8f4544022b03aa0c1f4ed062c94482663d6076a2e08deefc0aa
|
|
4
|
+
data.tar.gz: 2fceb32ccab79dc19cf8449268965f3450d26fb1ab57d23ebff17b316f95c758
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bec89343f7f847098e221235e4f8f76fe862e57a4af9f05f6da16bc7739e9db28777ae2df11860eba4630c88d5fe179571b6a18bf556477fcae838793e579960
|
|
7
|
+
data.tar.gz: b1a5e69406924bd48383e18cabd9416d95a77b90c8cbbdfaf2e395de50b2e95926f9a2b30958036f94fa77be2a05f9a0556f5de0c080e3b1881ed7c2351e956a
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
dor-workflow-client (7.
|
|
4
|
+
dor-workflow-client (7.3.0)
|
|
5
5
|
activesupport (>= 3.2.1, < 8)
|
|
6
6
|
deprecation (>= 0.99.0)
|
|
7
7
|
faraday (~> 2.0)
|
|
@@ -47,7 +47,7 @@ GEM
|
|
|
47
47
|
hashdiff (1.1.0)
|
|
48
48
|
i18n (1.14.4)
|
|
49
49
|
concurrent-ruby (~> 1.0)
|
|
50
|
-
json (2.7.
|
|
50
|
+
json (2.7.2)
|
|
51
51
|
language_server-protocol (3.17.0.3)
|
|
52
52
|
mini_portile2 (2.8.5)
|
|
53
53
|
minitest (5.22.3)
|
|
@@ -61,10 +61,10 @@ GEM
|
|
|
61
61
|
parser (3.3.0.5)
|
|
62
62
|
ast (~> 2.4.1)
|
|
63
63
|
racc
|
|
64
|
-
public_suffix (5.0.
|
|
64
|
+
public_suffix (5.0.5)
|
|
65
65
|
racc (1.7.3)
|
|
66
66
|
rainbow (3.1.1)
|
|
67
|
-
rake (13.1
|
|
67
|
+
rake (13.2.1)
|
|
68
68
|
regexp_parser (2.9.0)
|
|
69
69
|
rexml (3.2.6)
|
|
70
70
|
rspec (3.13.0)
|
|
@@ -82,7 +82,7 @@ GEM
|
|
|
82
82
|
rspec-support (3.13.1)
|
|
83
83
|
rspec_junit_formatter (0.6.0)
|
|
84
84
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
85
|
-
rubocop (1.
|
|
85
|
+
rubocop (1.63.0)
|
|
86
86
|
json (~> 2.3)
|
|
87
87
|
language_server-protocol (>= 3.17.0)
|
|
88
88
|
parallel (~> 1.10)
|
|
@@ -101,7 +101,7 @@ GEM
|
|
|
101
101
|
rubocop (~> 1.41)
|
|
102
102
|
rubocop-rake (0.6.0)
|
|
103
103
|
rubocop (~> 1.0)
|
|
104
|
-
rubocop-rspec (2.
|
|
104
|
+
rubocop-rspec (2.29.1)
|
|
105
105
|
rubocop (~> 1.40)
|
|
106
106
|
rubocop-capybara (~> 2.17)
|
|
107
107
|
rubocop-factory_bot (~> 2.22)
|
|
@@ -10,26 +10,24 @@ module Dor
|
|
|
10
10
|
0 => 'Unknown Status', # if there are no milestones for the current version, someone likely messed up the versioning process.
|
|
11
11
|
1 => 'Registered',
|
|
12
12
|
2 => 'In accessioning',
|
|
13
|
-
3 => 'In accessioning (
|
|
14
|
-
4 => 'In accessioning (
|
|
15
|
-
5 => '
|
|
16
|
-
6 => 'Accessioned',
|
|
17
|
-
7 => 'Accessioned (indexed)',
|
|
18
|
-
8 => '
|
|
19
|
-
9 => 'Opened'
|
|
13
|
+
3 => 'In accessioning (published)',
|
|
14
|
+
4 => 'In accessioning (published, deposited)',
|
|
15
|
+
5 => 'Accessioned',
|
|
16
|
+
6 => 'Accessioned (indexed)',
|
|
17
|
+
7 => 'Accessioned (indexed, ingested)',
|
|
18
|
+
8 => 'Opened'
|
|
20
19
|
}.freeze
|
|
21
20
|
|
|
22
21
|
# milestones from accessioning and the order they happen in
|
|
23
22
|
STEPS = {
|
|
24
23
|
'registered' => 1,
|
|
25
24
|
'submitted' => 2,
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'opened' => 9
|
|
25
|
+
'published' => 3,
|
|
26
|
+
'deposited' => 4,
|
|
27
|
+
'accessioned' => 5,
|
|
28
|
+
'indexed' => 6,
|
|
29
|
+
'shelved' => 7,
|
|
30
|
+
'opened' => 8
|
|
33
31
|
}.freeze
|
|
34
32
|
|
|
35
33
|
attr_reader :status_code
|
|
@@ -78,7 +76,7 @@ module Dor
|
|
|
78
76
|
end
|
|
79
77
|
|
|
80
78
|
# @return [String] text translation of the status code, minus any trailing parenthetical explanation
|
|
81
|
-
# e.g. '
|
|
79
|
+
# e.g. 'Accessioned (indexed)' and 'Accessioned (indexed, ingested)', both return 'Accessioned'
|
|
82
80
|
def simplified_status_code(display)
|
|
83
81
|
display.gsub(/\(.*\)$/, '').strip
|
|
84
82
|
end
|
|
@@ -28,8 +28,7 @@ module Dor
|
|
|
28
28
|
def process_for_recent_version(name:)
|
|
29
29
|
nodes = process_nodes_for(name: name)
|
|
30
30
|
node = nodes.max { |a, b| a.attr('version').to_i <=> b.attr('version').to_i }
|
|
31
|
-
|
|
32
|
-
Process.new(parent: self, **attributes)
|
|
31
|
+
to_process(node)
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
def empty?
|
|
@@ -39,13 +38,24 @@ module Dor
|
|
|
39
38
|
# Check if all processes are skipped or complete for the provided version.
|
|
40
39
|
# @param [Integer] version the version we are checking for.
|
|
41
40
|
def complete_for?(version:)
|
|
42
|
-
ng_xml.xpath("/workflow/process[@version=#{version}]/@status").map(&:value).all? { |p| %w[skipped completed].include?(p) }
|
|
41
|
+
# ng_xml.xpath("/workflow/process[@version=#{version}]/@status").map(&:value).all? { |p| %w[skipped completed].include?(p) }
|
|
42
|
+
incomplete_processes_for(version: version).empty?
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def complete?
|
|
46
46
|
complete_for?(version: version)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
def incomplete_processes_for(version:)
|
|
50
|
+
process_nodes = ng_xml.xpath("/workflow/process[@version=#{version}]")
|
|
51
|
+
incomplete_process_nodes = process_nodes.reject { |process_node| %w[skipped completed].include?(process_node.attr('status')) }
|
|
52
|
+
incomplete_process_nodes.map { |process_node| to_process(process_node) }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def incomplete_processes
|
|
56
|
+
incomplete_processes_for(version: version)
|
|
57
|
+
end
|
|
58
|
+
|
|
49
59
|
attr_reader :xml
|
|
50
60
|
|
|
51
61
|
private
|
|
@@ -66,6 +76,11 @@ module Dor
|
|
|
66
76
|
def ng_xml
|
|
67
77
|
@ng_xml ||= Nokogiri::XML(@xml)
|
|
68
78
|
end
|
|
79
|
+
|
|
80
|
+
def to_process(node)
|
|
81
|
+
attributes = node ? node.attributes.to_h { |k, v| [k.to_sym, v.value] } : {}
|
|
82
|
+
Process.new(parent: self, **attributes)
|
|
83
|
+
end
|
|
69
84
|
end
|
|
70
85
|
end
|
|
71
86
|
end
|
|
@@ -32,7 +32,7 @@ RSpec.describe Dor::Workflow::Client::Status do
|
|
|
32
32
|
let(:version) { '4' }
|
|
33
33
|
|
|
34
34
|
it 'generates a status string' do
|
|
35
|
-
expect(status).to eq('v4 In accessioning (
|
|
35
|
+
expect(status).to eq('v4 In accessioning (published)')
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -47,7 +47,7 @@ RSpec.describe Dor::Workflow::Client::Status do
|
|
|
47
47
|
let(:version) { '3' }
|
|
48
48
|
|
|
49
49
|
it 'generates a status string' do
|
|
50
|
-
expect(status).to eq('v3 In accessioning (
|
|
50
|
+
expect(status).to eq('v3 In accessioning (published)')
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
end
|
|
@@ -177,7 +177,7 @@ RSpec.describe Dor::Workflow::Client::Status do
|
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
it 'has the correct status of deposited (v2) object' do
|
|
180
|
-
expect(status).to eq('v2 In accessioning (
|
|
180
|
+
expect(status).to eq('v2 In accessioning (published, deposited) 2013-10-01 07:10PM')
|
|
181
181
|
end
|
|
182
182
|
end
|
|
183
183
|
end
|
|
@@ -198,4 +198,62 @@ RSpec.describe Dor::Workflow::Response::Workflow do
|
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
end
|
|
201
|
+
|
|
202
|
+
describe '#incomplete_processes' do
|
|
203
|
+
subject(:processes) { instance.incomplete_processes }
|
|
204
|
+
|
|
205
|
+
context 'when all steps are complete' do
|
|
206
|
+
let(:xml) do
|
|
207
|
+
<<~XML
|
|
208
|
+
<workflow repository="dor" objectId="druid:mw971zk1113" id="assemblyWF">
|
|
209
|
+
<process version="1" laneId="default" elapsed="0.0" attempts="1" datetime="2013-02-18T14:40:25-0800" status="completed" name="start-assembly"/>
|
|
210
|
+
<process version="1" laneId="default" elapsed="0.509" attempts="1" datetime="2013-02-18T14:42:24-0800" status="completed" name="jp2-create"/>
|
|
211
|
+
</workflow>
|
|
212
|
+
XML
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it { is_expected.to be_empty }
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
context 'when some steps are not complete' do
|
|
219
|
+
let(:xml) do
|
|
220
|
+
<<~XML
|
|
221
|
+
<workflow repository="dor" objectId="druid:mw971zk1113" id="assemblyWF">
|
|
222
|
+
<process version="1" laneId="default" elapsed="0.0" attempts="1" datetime="2013-02-18T14:40:25-0800" status="completed" name="start-assembly"/>
|
|
223
|
+
<process version="1" laneId="default" elapsed="0.509" attempts="1" datetime="2013-02-18T14:42:24-0800" status="waiting" name="jp2-create"/>
|
|
224
|
+
</workflow>
|
|
225
|
+
XML
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
it 'returns the incomplete processes' do
|
|
229
|
+
expect(processes.size).to eq 1
|
|
230
|
+
expect(processes.first.name).to eq 'jp2-create'
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
describe '#incomplete_processes_for' do
|
|
236
|
+
let(:xml) do
|
|
237
|
+
<<~XML
|
|
238
|
+
<workflow repository="dor" objectId="druid:mw971zk1113" id="assemblyWF">
|
|
239
|
+
<process version="1" laneId="default" elapsed="0.0" attempts="1" datetime="2013-02-18T14:40:25-0800" status="completed" name="start-assembly"/>
|
|
240
|
+
<process version="1" laneId="default" elapsed="0.509" attempts="1" datetime="2013-02-18T14:42:24-0800" status="waiting" name="jp2-create"/>
|
|
241
|
+
<process version="2" laneId="default" elapsed="0.0" attempts="1" datetime="2013-02-18T14:40:25-0800" status="completed" name="start-assembly"/>
|
|
242
|
+
<process version="2" laneId="default" elapsed="0.509" attempts="1" datetime="2013-02-18T14:42:24-0800" status="completed" name="jp2-create"/>
|
|
243
|
+
</workflow>
|
|
244
|
+
XML
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
context 'when all steps are complete' do
|
|
248
|
+
it 'returns empty' do
|
|
249
|
+
expect(instance.incomplete_processes_for(version: 2)).to be_empty
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
context 'when some steps are not complete' do
|
|
254
|
+
it 'returns false' do
|
|
255
|
+
expect(instance.incomplete_processes_for(version: 1).size).to eq 1
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
end
|
|
201
259
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dor-workflow-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.
|
|
4
|
+
version: 7.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Willy Mene
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2024-04-
|
|
12
|
+
date: 2024-04-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|