dor-workflow-client 3.4.2 → 3.5.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: 8eac84de233115bd296697bf85c88d1d6ea530d563bec65e5730ee8d3fb82826
4
- data.tar.gz: 3e5b8036c01e95bc9d6ae2abc6a68e0bc3368ad3a36faf54ecb47f5a6b412fec
3
+ metadata.gz: 282db0ca244d39fff241a2a30face5c69f101762aba3355a078da50eccae6e49
4
+ data.tar.gz: 34342d7f0f0808aec6ce8bf59de2fde85f9154c656940da008928404b74e0224
5
5
  SHA512:
6
- metadata.gz: 7a1b57fe59f764112f31295aba8ed695a0c81da63d78d7eb3c5558370694ace019aeae586f621e5f0ec48f33bef2f65da87e35b6cda5be11e3a1c78308a95739
7
- data.tar.gz: 599edcdf8f87d328a618aa46c65b5a37393e58a827a8131ebe0e58c39806cbc6f4fa4fc500ecc6e44c370d00cba93659841332b3daef2ac8a3e68944761bca0d
6
+ metadata.gz: 0fb6baead7b56ee334ad8c100e541fb45fdef6d0053b98b440ceb2982801fced53280c7a15718d7c5d0983f89adf452f5ba2daa8c7c81b4718cbac1ff4274a3b
7
+ data.tar.gz: 7515e44eac0411fac130ca5661237161ce8ee60def8c8384ba4fc7ef35d72013455ed8f77ff54b770df72afe6099cef20eaa55a14791c35bd8b13d17c7d35899
data/.travis.yml CHANGED
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
- notifications:
3
- email: false
2
+ cache: bundler
4
3
 
5
4
  rvm:
6
5
  - 2.5.3
@@ -9,3 +8,14 @@ env:
9
8
  - "RAILS_VERSION=4.2.11.1"
10
9
  - "RAILS_VERSION=5.2.3"
11
10
  - "RAILS_VERSION=6.0.0"
11
+
12
+ before_script:
13
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
14
+ - chmod +x ./cc-test-reporter
15
+ - ./cc-test-reporter before-build
16
+
17
+ after_script:
18
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
19
+
20
+ notifications:
21
+ email: false
data/README.md CHANGED
@@ -1,4 +1,6 @@
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
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/fba77ff479c468f8510f/test_coverage)](https://codeclimate.com/github/sul-dlss/dor-services-client/test_coverage)
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/fba77ff479c468f8510f/maintainability)](https://codeclimate.com/github/sul-dlss/dor-services-client/maintainability)
2
4
  [![Gem Version](https://badge.fury.io/rb/dor-workflow-client.svg)](https://badge.fury.io/rb/dor-workflow-client)
3
5
 
4
6
  # dor-workflow-client gem
@@ -22,7 +22,7 @@ module Dor
22
22
  # Create and update workflows
23
23
  class Client
24
24
  # From Workflow Service's admin/Process.java
25
- VALID_STATUS = %w[waiting completed error queued skipped hold].freeze
25
+ VALID_STATUS = %w[waiting completed error queued skipped].freeze
26
26
 
27
27
  attr_accessor :requestor
28
28
 
@@ -66,6 +66,10 @@ module Dor
66
66
  @version_routes ||= VersionRoutes.new(requestor: requestor)
67
67
  end
68
68
 
69
+ def workflow_template(name)
70
+ WorkflowTemplate.new(requestor: requestor).retrieve(name)
71
+ end
72
+
69
73
  private
70
74
 
71
75
  # Among other things, a distinct method helps tests mock default logger
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Workflow
5
5
  class Client
6
- VERSION = '3.4.2'
6
+ VERSION = '3.5.0'
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dor
4
+ module Workflow
5
+ class Client
6
+ # Makes requests relating to a workflow template
7
+ class WorkflowTemplate
8
+ def initialize(requestor:)
9
+ @requestor = requestor
10
+ end
11
+
12
+ # Retrieves a representation of the workflow template
13
+ #
14
+ # @param [String] workflow_name The name of the workflow you want to retrieve
15
+ # @return [Hash] a representation of the workflow template
16
+ # @example:
17
+ # retrieve('assemblyWF') => '{"processes":[{"name":"start-assembly"},{"name":"content-metadata-create"},...]}'
18
+ #
19
+ def retrieve(workflow_name)
20
+ body = requestor.request "workflow_templates/#{workflow_name}"
21
+ JSON.parse(body)
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :requestor
27
+ end
28
+ end
29
+ end
30
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
-
6
3
  require 'simplecov'
7
4
  SimpleCov.start do
8
5
  add_filter 'spec'
9
6
  end
10
7
 
8
+ lib = File.expand_path('lib', __dir__)
9
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
10
+
11
11
  require 'byebug'
12
12
  require 'dor/workflow/client'
13
13
  require 'webmock/rspec'
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Dor::Workflow::Client::WorkflowTemplate do
6
+ let(:data) { '{"processes":[{"name":"start-assembly"},{"name":"content-metadata-create"}]}' }
7
+ let(:mock_requestor) { instance_double(Dor::Workflow::Client::Requestor, request: data) }
8
+
9
+ let(:routes) { described_class.new(requestor: mock_requestor) }
10
+
11
+ describe '#retrieve' do
12
+ subject(:workflow_template) { routes.retrieve('accessionWF') }
13
+
14
+ it 'returns a workflow' do
15
+ expect(workflow_template['processes']).to eq [{ 'name' => 'start-assembly' },
16
+ { 'name' => 'content-metadata-create' }]
17
+ expect(mock_requestor).to have_received(:request).with('workflow_templates/accessionWF')
18
+ end
19
+ end
20
+ end
@@ -185,6 +185,21 @@ RSpec.describe Dor::Workflow::Client do
185
185
  end
186
186
  end
187
187
 
188
+ describe '#workflow_template' do
189
+ subject(:workflow_template) { client.workflow_template('etdSubmitWF') }
190
+
191
+ let(:workflow_template_client) { instance_double Dor::Workflow::Client::WorkflowTemplate, retrieve: 'data' }
192
+
193
+ before do
194
+ allow(Dor::Workflow::Client::WorkflowTemplate).to receive(:new).and_return(workflow_template_client)
195
+ end
196
+
197
+ it 'delegates to the client' do
198
+ expect(workflow_template).to eq 'data'
199
+ expect(workflow_template_client).to have_received(:retrieve).with('etdSubmitWF')
200
+ end
201
+ end
202
+
188
203
  describe '#workflow_status' do
189
204
  let(:repo) { @repo }
190
205
  let(:druid) { @druid }
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.4.2
4
+ version: 3.5.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-08-26 00:00:00.000000000 Z
12
+ date: 2019-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -217,6 +217,7 @@ files:
217
217
  - lib/dor/workflow/client/version.rb
218
218
  - lib/dor/workflow/client/version_routes.rb
219
219
  - lib/dor/workflow/client/workflow_routes.rb
220
+ - lib/dor/workflow/client/workflow_template.rb
220
221
  - lib/dor/workflow/response/process.rb
221
222
  - lib/dor/workflow/response/update.rb
222
223
  - lib/dor/workflow/response/workflow.rb
@@ -229,6 +230,7 @@ files:
229
230
  - spec/workflow/client/lifecycle_routes_spec.rb
230
231
  - spec/workflow/client/requestor_spec.rb
231
232
  - spec/workflow/client/workflow_routes_spec.rb
233
+ - spec/workflow/client/workflow_template_spec.rb
232
234
  - spec/workflow/client_spec.rb
233
235
  homepage: https://consul.stanford.edu/display/DOR/DOR+services#DORservices-initializeworkflow
234
236
  licenses: []
@@ -248,8 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
250
  - !ruby/object:Gem::Version
249
251
  version: '0'
250
252
  requirements: []
251
- rubyforge_project:
252
- rubygems_version: 2.7.8
253
+ rubygems_version: 3.0.3
253
254
  signing_key:
254
255
  specification_version: 4
255
256
  summary: Provides convenience methods to work with the DOR Workflow Service
@@ -261,4 +262,5 @@ test_files:
261
262
  - spec/workflow/client/lifecycle_routes_spec.rb
262
263
  - spec/workflow/client/requestor_spec.rb
263
264
  - spec/workflow/client/workflow_routes_spec.rb
265
+ - spec/workflow/client/workflow_template_spec.rb
264
266
  - spec/workflow/client_spec.rb