dor-workflow-client 3.8.0 → 3.9.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: 79af115a9f02f6d3de631dcf9dd88d6160b1fddc865cb19bf39e2f76077a7992
4
- data.tar.gz: 41a3bb9cd2cfe4a7ae7eb74617c4bb54b0f351a266b3c56e13e1ce7962fdc9a9
3
+ metadata.gz: 103d448136015a1fcfe0742a1804ac0d883106071ca53472ccf8e0671b158e11
4
+ data.tar.gz: b94093ac940a33c03dca26685ef808322d07f1430b61769414aabfbb6203587f
5
5
  SHA512:
6
- metadata.gz: 1e0e3579ec7be81ae999485c736d9314a71e4daf63116e19aaa7af92c86af59031795e61eca32114e5459c3c314fbe46f31d6640dde2fada2ec124abc1a1ff1c
7
- data.tar.gz: 6ff468132eb597d1dc96e0901b828c4e4b9764832a4159ecbbb4920a3d9b705efc848586425eccd2fff195411a48e02a9a8e4e70c808e5ef350a98a636430c45
6
+ metadata.gz: 75b52575766b05e2645d800203e18e6f2ffe2929be1de46b00c31b36712246280ae35332102d4675e642e74dbc8076f675df9a2fdc7d9f547c599cad4ee50134
7
+ data.tar.gz: 55279fcdcb43e241a3f368290b2d86c896956a7962a2bb2506c8b01f02533c5b6690545a7de675865d1323d58a03d34e928dc758c61dd8733727c04e2d2b4ed0
@@ -14,10 +14,11 @@ module Dor
14
14
  # @param [String] druid object id
15
15
  # @param [String] milestone_name the name of the milestone being queried for
16
16
  # @param [Number] version the version to query for
17
+ # @param [Boolean] active_only (false) if true, return only lifecycle steps for versions that have all processes complete
17
18
  # @return [Time] when the milestone was achieved. Returns nil if the milestone does not exist
18
19
  #
19
- def lifecycle(repo, druid, milestone_name, version: nil)
20
- filter_milestone(query_lifecycle(repo, druid, version: version), milestone_name)
20
+ def lifecycle(repo, druid, milestone_name, version: nil, active_only: false)
21
+ filter_milestone(query_lifecycle(repo, druid, version: version, active_only: active_only), milestone_name)
21
22
  end
22
23
 
23
24
  # Returns the Date for a requested milestone ONLY for the current version.
@@ -26,15 +27,16 @@ module Dor
26
27
  # @param [String] repo repository name
27
28
  # @param [String] druid object id
28
29
  # @param [String] milestone_name the name of the milestone being queried for
30
+ # @param [Number] version the version to query for
29
31
  # @return [Time] when the milestone was achieved. Returns nil if the milestone does not exis
30
32
  #
31
- def active_lifecycle(repo, druid, milestone_name)
32
- filter_milestone(query_lifecycle(repo, druid, active_only: true), milestone_name)
33
+ def active_lifecycle(repo, druid, milestone_name, version: nil)
34
+ lifecycle(repo, druid, milestone_name, version: version, active_only: true)
33
35
  end
34
36
 
35
37
  # @return [Hash]
36
38
  def milestones(repo, druid)
37
- doc = query_lifecycle(repo, druid)
39
+ doc = query_lifecycle(repo, druid, active_only: false)
38
40
  doc.xpath('//lifecycle/milestone').collect do |node|
39
41
  { milestone: node.text, at: Time.parse(node['date']), version: node['version'] }
40
42
  end
@@ -49,6 +51,10 @@ module Dor
49
51
  Time.parse(milestone['date'])
50
52
  end
51
53
 
54
+ # @param [String] repo repository name
55
+ # @param [String] druid object id
56
+ # @param [Boolean] active_only (false) if true, return only lifecycle steps for versions that have all processes complete
57
+ # @param [Number] version the version to query for
52
58
  # @return [Nokogiri::XML::Document]
53
59
  # @example An example lifecycle xml from the workflow service.
54
60
  # <lifecycle objectId="druid:ct011cv6501">
@@ -57,15 +63,13 @@ module Dor
57
63
  # <milestone date="2010-06-15T16:08:58-0700">released</milestone>
58
64
  # </lifecycle>
59
65
  #
60
- def query_lifecycle(repo, druid, active_only: false, version: nil)
66
+ def query_lifecycle(repo, druid, active_only:, version: nil)
61
67
  req = "#{repo}/objects/#{druid}/lifecycle"
62
- req += if version
63
- "?version=#{version}"
64
- elsif active_only
65
- '?active-only=true'
66
- else
67
- ''
68
- end
68
+ params = []
69
+ params << "version=#{version}" if version
70
+ params << 'active-only=true' if active_only
71
+ req += "?#{params.join('&')}" unless params.empty?
72
+
69
73
  Nokogiri::XML(requestor.request(req))
70
74
  end
71
75
 
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Workflow
5
5
  class Client
6
- VERSION = '3.8.0'
6
+ VERSION = '3.9.0'
7
7
  end
8
8
  end
9
9
  end
@@ -21,6 +21,15 @@ module Dor
21
21
  JSON.parse(body)
22
22
  end
23
23
 
24
+ # Retrieves a list of workflow template name
25
+ #
26
+ # @return [Array<String>] the list of templates
27
+ #
28
+ def all
29
+ body = requestor.request 'workflow_templates'
30
+ JSON.parse(body)
31
+ end
32
+
24
33
  private
25
34
 
26
35
  attr_reader :requestor
@@ -44,4 +44,24 @@ RSpec.describe Dor::Workflow::Client::LifecycleRoutes do
44
44
  end
45
45
  end
46
46
  end
47
+
48
+ describe '#active_lifecycle' do
49
+ context 'without version' do
50
+ subject(:active_lifecycle) { routes.active_lifecycle('dor', 'druid:gv054hp4128', 'submitted') }
51
+
52
+ it 'make the request' do
53
+ active_lifecycle
54
+ expect(requestor).to have_received(:request).with('dor/objects/druid:gv054hp4128/lifecycle?active-only=true')
55
+ end
56
+ end
57
+
58
+ context 'with version' do
59
+ subject(:active_lifecycle) { routes.active_lifecycle('dor', 'druid:gv054hp4128', 'submitted', version: 3) }
60
+
61
+ it 'makes the request with the version' do
62
+ active_lifecycle
63
+ expect(requestor).to have_received(:request).with('dor/objects/druid:gv054hp4128/lifecycle?version=3&active-only=true')
64
+ end
65
+ end
66
+ end
47
67
  end
@@ -3,18 +3,28 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Dor::Workflow::Client::WorkflowTemplate do
6
- let(:data) { '{"processes":[{"name":"start-assembly"},{"name":"content-metadata-create"}]}' }
7
6
  let(:mock_requestor) { instance_double(Dor::Workflow::Client::Requestor, request: data) }
8
7
 
9
8
  let(:routes) { described_class.new(requestor: mock_requestor) }
10
9
 
11
10
  describe '#retrieve' do
12
11
  subject(:workflow_template) { routes.retrieve('accessionWF') }
12
+ let(:data) { '{"processes":[{"name":"start-assembly"},{"name":"content-metadata-create"}]}' }
13
13
 
14
- it 'returns a workflow' do
14
+ it 'returns a workflow template' do
15
15
  expect(workflow_template['processes']).to eq [{ 'name' => 'start-assembly' },
16
16
  { 'name' => 'content-metadata-create' }]
17
17
  expect(mock_requestor).to have_received(:request).with('workflow_templates/accessionWF')
18
18
  end
19
19
  end
20
+
21
+ describe '#all' do
22
+ subject(:workflow_templates) { routes.all }
23
+ let(:data) { '["assemblyWF","registrationWF"]' }
24
+
25
+ it 'returns a list of templates' do
26
+ expect(workflow_templates).to eq %w[assemblyWF registrationWF]
27
+ expect(mock_requestor).to have_received(:request).with('workflow_templates')
28
+ end
29
+ end
20
30
  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: 3.8.0
4
+ version: 3.9.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-09-18 00:00:00.000000000 Z
12
+ date: 2019-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport