dor-workflow-client 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
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