dor-workflow-client 7.2.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/version.rb +1 -1
- data/lib/dor/workflow/response/workflow.rb +18 -3
- data/spec/dor/workflow/response/workflow_spec.rb +58 -0
- metadata +3 -3
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)
|
@@ -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
|
@@ -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
|
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
|
-
rubygems_version: 3.
|
171
|
+
rubygems_version: 3.5.7
|
172
172
|
signing_key:
|
173
173
|
specification_version: 4
|
174
174
|
summary: Provides convenience methods to work with the DOR Workflow Service
|