dor-workflow-client 3.1.0 → 3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f379f2897210e36a67cf06fd7eed5ce8caa8b810b329a9c66dae0a03e03475d4
4
- data.tar.gz: 309659963dca39f119c924d43be8599a3020d5154fb4dac3b4fc9923132542bf
3
+ metadata.gz: efd50cf41d262788cb42851599ce7e4556be25329de08a657cca03aa2e76ba23
4
+ data.tar.gz: 6a95df393c1110cfb0eb23d10673b7a057cb27c15f326a099d2ee970f7fc21ad
5
5
  SHA512:
6
- metadata.gz: 3d0240474ec807050bf566fe9f4fe329cd7c5a471da6486966fcf9baa733169ef6a2dd87d5442634180847a245f8e07355f323886450474b401810eb0270a797
7
- data.tar.gz: f057983eab36e17474eccaebfca7bb96666eb7f0ad103fdd2d1139291ef659023f4cdad56dc32ec1d11de2903d6716deb90d2c9cb3815353c8fe131e3497e3ab
6
+ metadata.gz: 0b438491d28534e0f80789ac107a5b882aa9d21310497105f50ebb42e22324a6c29a905f3da2cda8595febec2d65df6f2e6c3c0535727b4f534df64e8fbfb789
7
+ data.tar.gz: b16d230f7f4f86d0edae823233d99be2afd0a6bef875ffb4c2b6a29cd4cbde1f8e06319bd90434c1aa79591c87a429ee7c6bf8c47617f9ea20e2bbbeb2c3f0d1
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  [![Build Status](https://travis-ci.org/sul-dlss/dor-workflow-client.svg?branch=master)](https://travis-ci.org/sul-dlss/dor-workflow-client)
2
+ [![Gem Version](https://badge.fury.io/rb/dor-workflow-client.svg)](https://badge.fury.io/rb/dor-workflow-client)
2
3
 
3
4
  # dor-workflow-client gem
4
5
 
@@ -18,16 +18,12 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ['lib']
19
19
 
20
20
  gem.add_dependency 'activesupport', '>= 3.2.1', '< 6'
21
- gem.add_dependency 'confstruct', '>= 0.2.7', '< 2'
22
21
  gem.add_dependency 'deprecation', '~> 0'
23
22
  gem.add_dependency 'faraday', '~> 0.9', '>= 0.9.2'
24
23
  gem.add_dependency 'faraday_middleware'
25
- gem.add_dependency 'net-http-persistent', '>= 2.9.4', '< 4.a'
26
24
  gem.add_dependency 'nokogiri', '~> 1.6'
27
25
 
28
- gem.add_development_dependency 'equivalent-xml', '~> 0.5', '>= 0.5.1'
29
26
  gem.add_development_dependency 'rake'
30
- gem.add_development_dependency 'redcarpet'
31
27
  gem.add_development_dependency 'rspec', '~> 3.3'
32
28
  gem.add_development_dependency 'rubocop', '~> 0.63.1'
33
29
  gem.add_development_dependency 'simplecov'
@@ -12,39 +12,21 @@ module Dor
12
12
  # Returns the Date for a requested milestone from workflow lifecycle
13
13
  # @param [String] repo repository name
14
14
  # @param [String] druid object id
15
- # @param [String] milestone name of the milestone being queried for
15
+ # @param [String] milestone_name the name of the milestone being queried for
16
16
  # @return [Time] when the milestone was achieved. Returns nil if the milestone does not exist
17
- # @example An example lifecycle xml from the workflow service.
18
- # <lifecycle objectId="druid:ct011cv6501">
19
- # <milestone date="2010-04-27T11:34:17-0700">registered</milestone>
20
- # <milestone date="2010-04-29T10:12:51-0700">inprocess</milestone>
21
- # <milestone date="2010-06-15T16:08:58-0700">released</milestone>
22
- # </lifecycle>
23
- def lifecycle(repo, druid, milestone)
24
- doc = query_lifecycle(repo, druid)
25
- milestone = doc.at_xpath("//lifecycle/milestone[text() = '#{milestone}']")
26
- return Time.parse(milestone['date']) if milestone
27
-
28
- nil
17
+ #
18
+ def lifecycle(repo, druid, milestone_name)
19
+ filter_milestone(query_lifecycle(repo, druid), milestone_name)
29
20
  end
30
21
 
31
22
  # Returns the Date for a requested milestone ONLY FROM THE ACTIVE workflow table
32
23
  # @param [String] repo repository name
33
24
  # @param [String] druid object id
34
- # @param [String] milestone name of the milestone being queried for
35
- # @return [Time] when the milestone was achieved. Returns nil if the milestone does not exist
36
- # @example An example lifecycle xml from the workflow service.
37
- # <lifecycle objectId="druid:ct011cv6501">
38
- # <milestone date="2010-04-27T11:34:17-0700">registered</milestone>
39
- # <milestone date="2010-04-29T10:12:51-0700">inprocess</milestone>
40
- # <milestone date="2010-06-15T16:08:58-0700">released</milestone>
41
- # </lifecycle>
42
- def active_lifecycle(repo, druid, milestone)
43
- doc = query_lifecycle(repo, druid, true)
44
- milestone = doc.at_xpath("//lifecycle/milestone[text() = '#{milestone}']")
45
- return Time.parse(milestone['date']) if milestone
46
-
47
- nil
25
+ # @param [String] milestone_name the name of the milestone being queried for
26
+ # @return [Time] when the milestone was achieved. Returns nil if the milestone does not exis
27
+ #
28
+ def active_lifecycle(repo, druid, milestone_name)
29
+ filter_milestone(query_lifecycle(repo, druid, true), milestone_name)
48
30
  end
49
31
 
50
32
  # @return [Hash]
@@ -57,7 +39,21 @@ module Dor
57
39
 
58
40
  private
59
41
 
42
+ def filter_milestone(lifecycle_doc, milestone_name)
43
+ milestone = lifecycle_doc.at_xpath("//lifecycle/milestone[text() = '#{milestone_name}']")
44
+ return unless milestone
45
+
46
+ Time.parse(milestone['date'])
47
+ end
48
+
60
49
  # @return [Nokogiri::XML::Document]
50
+ # @example An example lifecycle xml from the workflow service.
51
+ # <lifecycle objectId="druid:ct011cv6501">
52
+ # <milestone date="2010-04-27T11:34:17-0700">registered</milestone>
53
+ # <milestone date="2010-04-29T10:12:51-0700">inprocess</milestone>
54
+ # <milestone date="2010-06-15T16:08:58-0700">released</milestone>
55
+ # </lifecycle>
56
+ #
61
57
  def query_lifecycle(repo, druid, active_only = false)
62
58
  req = "#{repo}/objects/#{druid}/lifecycle"
63
59
  req += '?active-only=true' if active_only
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Workflow
5
5
  class Client
6
- VERSION = '3.1.0'
6
+ VERSION = '3.2.0'
7
7
  end
8
8
  end
9
9
  end
@@ -20,12 +20,10 @@ module Dor
20
20
  # @param [String] workflow_name The name of the workflow you want to create
21
21
  # @param [String] wf_xml Ignored
22
22
  # @param [Hash] opts optional params
23
- # @option opts [Boolean] :create_ds if true, a workflow datastream will be created in Fedora. Set to false if you do not want a datastream to be created
24
- # If you do not pass in an <b>opts</b> Hash, then :create_ds is set to true by default
25
23
  # @option opts [String] :lane_id adds laneId attribute to all process elements in the wf_xml workflow xml. Defaults to a value of 'default'
26
24
  # @return [Boolean] always true
27
25
  #
28
- def create_workflow(_repo, druid, workflow_name, _wf_xml, opts = { create_ds: true })
26
+ def create_workflow(_repo, druid, workflow_name, _wf_xml, opts = {})
29
27
  create_workflow_by_name(druid, workflow_name, opts)
30
28
  end
31
29
  deprecation_deprecate create_workflow: 'use create_workflow_by_name instead'
@@ -40,12 +38,15 @@ module Dor
40
38
  # name that is known by the workflow service.
41
39
  # @param [Hash] opts optional params
42
40
  # @option opts [String] :lane_id adds laneId attribute to all process elements in the wf_xml workflow xml. Defaults to a value of 'default'
41
+ # @option opts [Integer] :version specifies the version so that workflow service doesn't need to query dor-services.
43
42
  # @return [Boolean] always true
44
43
  #
45
- def create_workflow_by_name(druid, workflow_name, opts = { create_ds: true })
44
+ def create_workflow_by_name(druid, workflow_name, opts = {})
45
+ params = { 'lane-id' => opts.fetch(:lane_id, 'default') }
46
+ params['version'] = opts[:version] if opts[:version]
46
47
  requestor.request "objects/#{druid}/workflows/#{workflow_name}", 'post', '',
47
48
  content_type: 'application/xml',
48
- params: { 'lane-id' => opts.fetch(:lane_id, 'default') }
49
+ params: params
49
50
  true
50
51
  end
51
52
 
data/spec/spec_helper.rb CHANGED
@@ -10,8 +10,6 @@ end
10
10
 
11
11
  require 'byebug'
12
12
  require 'dor/workflow/client'
13
- require 'equivalent-xml'
14
- require 'equivalent-xml/rspec_matchers'
15
13
  require 'webmock/rspec'
16
14
 
17
15
  # RSpec.configure do |conf|
@@ -75,6 +75,7 @@ RSpec.describe Dor::Workflow::Client do
75
75
  stub.post("objects/#{@druid}/workflows/etdSubmitWF") { |_env| [201, {}, ''] }
76
76
  stub.post("objects/#{@druid}/workflows/raiseException") { |_env| raise 'broken' }
77
77
  stub.post("objects/#{@druid}/workflows/laneIdWF?lane-id=foo_lane") { |_env| [201, {}, ''] }
78
+ stub.post("objects/#{@druid}/workflows/versionWF?version=2") { |_env| [201, {}, ''] }
78
79
  end
79
80
  end
80
81
 
@@ -104,6 +105,7 @@ RSpec.describe Dor::Workflow::Client do
104
105
  stub.post("objects/#{@druid}/workflows/etdSubmitWF") { |_env| [201, {}, ''] }
105
106
  stub.post("objects/#{@druid}/workflows/raiseException") { |_env| raise 'broken' }
106
107
  stub.post("objects/#{@druid}/workflows/laneIdWF?lane-id=foo_lane") { |_env| [201, {}, ''] }
108
+ stub.post("objects/#{@druid}/workflows/versionWF?version=2") { |_env| [201, {}, ''] }
107
109
  end
108
110
  end
109
111
 
@@ -118,6 +120,10 @@ RSpec.describe Dor::Workflow::Client do
118
120
  it 'sets the lane_id param if provided in options hash' do
119
121
  client.create_workflow_by_name(@druid, 'laneIdWF', lane_id: 'foo_lane')
120
122
  end
123
+
124
+ it 'sets the version param if provided in options hash' do
125
+ client.create_workflow_by_name(@druid, 'versionWF', version: 2)
126
+ end
121
127
  end
122
128
 
123
129
  describe '#update_workflow_status' do
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: 3.1.0
4
+ version: 3.2.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: 2019-05-09 00:00:00.000000000 Z
12
+ date: 2019-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -31,26 +31,6 @@ dependencies:
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '6'
34
- - !ruby/object:Gem::Dependency
35
- name: confstruct
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 0.2.7
41
- - - "<"
42
- - !ruby/object:Gem::Version
43
- version: '2'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 0.2.7
51
- - - "<"
52
- - !ruby/object:Gem::Version
53
- version: '2'
54
34
  - !ruby/object:Gem::Dependency
55
35
  name: deprecation
56
36
  requirement: !ruby/object:Gem::Requirement
@@ -99,26 +79,6 @@ dependencies:
99
79
  - - ">="
100
80
  - !ruby/object:Gem::Version
101
81
  version: '0'
102
- - !ruby/object:Gem::Dependency
103
- name: net-http-persistent
104
- requirement: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: 2.9.4
109
- - - "<"
110
- - !ruby/object:Gem::Version
111
- version: 4.a
112
- type: :runtime
113
- prerelease: false
114
- version_requirements: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: 2.9.4
119
- - - "<"
120
- - !ruby/object:Gem::Version
121
- version: 4.a
122
82
  - !ruby/object:Gem::Dependency
123
83
  name: nokogiri
124
84
  requirement: !ruby/object:Gem::Requirement
@@ -133,26 +93,6 @@ dependencies:
133
93
  - - "~>"
134
94
  - !ruby/object:Gem::Version
135
95
  version: '1.6'
136
- - !ruby/object:Gem::Dependency
137
- name: equivalent-xml
138
- requirement: !ruby/object:Gem::Requirement
139
- requirements:
140
- - - "~>"
141
- - !ruby/object:Gem::Version
142
- version: '0.5'
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 0.5.1
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.5'
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- version: 0.5.1
156
96
  - !ruby/object:Gem::Dependency
157
97
  name: rake
158
98
  requirement: !ruby/object:Gem::Requirement
@@ -167,20 +107,6 @@ dependencies:
167
107
  - - ">="
168
108
  - !ruby/object:Gem::Version
169
109
  version: '0'
170
- - !ruby/object:Gem::Dependency
171
- name: redcarpet
172
- requirement: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- version: '0'
177
- type: :development
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- version: '0'
184
110
  - !ruby/object:Gem::Dependency
185
111
  name: rspec
186
112
  requirement: !ruby/object:Gem::Requirement