sequencescape-client-api 0.3.7 → 0.4.0.pre.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +44 -0
- data/.rubocop_todo.yml +338 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -1
- data/README.markdown +13 -0
- data/lib/sequencescape-api.rb +1 -1
- data/lib/sequencescape-api/actions.rb +9 -8
- data/lib/sequencescape-api/associations.rb +8 -6
- data/lib/sequencescape-api/associations/base.rb +1 -1
- data/lib/sequencescape-api/associations/base/instance_methods.rb +10 -8
- data/lib/sequencescape-api/associations/belongs_to.rb +4 -4
- data/lib/sequencescape-api/associations/has_many.rb +14 -13
- data/lib/sequencescape-api/associations/has_many/json.rb +1 -1
- data/lib/sequencescape-api/associations/has_many/validation.rb +1 -1
- data/lib/sequencescape-api/composition.rb +11 -7
- data/lib/sequencescape-api/connection_factory.rb +6 -5
- data/lib/sequencescape-api/connection_factory/actions.rb +17 -12
- data/lib/sequencescape-api/core.rb +12 -7
- data/lib/sequencescape-api/core_ext/array.rb +1 -1
- data/lib/sequencescape-api/core_ext/hash.rb +3 -3
- data/lib/sequencescape-api/errors.rb +2 -2
- data/lib/sequencescape-api/finder_methods.rb +16 -11
- data/lib/sequencescape-api/rails.rb +8 -7
- data/lib/sequencescape-api/resource/active_model.rb +1 -1
- data/lib/sequencescape-api/resource/attribute_groups.rb +11 -7
- data/lib/sequencescape-api/resource/attributes.rb +8 -8
- data/lib/sequencescape-api/resource/instance_methods.rb +17 -9
- data/lib/sequencescape-api/resource/json.rb +18 -15
- data/lib/sequencescape-api/resource/modifications.rb +20 -11
- data/lib/sequencescape-api/resource_model_proxy.rb +7 -5
- data/lib/sequencescape-api/version.rb +1 -1
- data/lib/sequencescape.rb +4 -2
- data/lib/sequencescape/bait_library.rb +1 -1
- data/lib/sequencescape/bait_library_layout.rb +2 -2
- data/lib/sequencescape/barcoded_asset.rb +1 -1
- data/lib/sequencescape/batch.rb +6 -6
- data/lib/sequencescape/behaviour/qced.rb +3 -4
- data/lib/sequencescape/behaviour/receptacle.rb +3 -3
- data/lib/sequencescape/behaviour/state_driven.rb +4 -4
- data/lib/sequencescape/bulk_transfer.rb +1 -1
- data/lib/sequencescape/comment.rb +0 -2
- data/lib/sequencescape/extraction_attribute.rb +6 -0
- data/lib/sequencescape/library_event.rb +1 -1
- data/lib/sequencescape/library_tube.rb +1 -1
- data/lib/sequencescape/lot.rb +0 -1
- data/lib/sequencescape/lot_type.rb +1 -2
- data/lib/sequencescape/order_template.rb +1 -2
- data/lib/sequencescape/pipeline.rb +1 -1
- data/lib/sequencescape/plate.rb +29 -11
- data/lib/sequencescape/plate/pooling.rb +9 -3
- data/lib/sequencescape/plate/well_structure.rb +6 -6
- data/lib/sequencescape/plate_conversion.rb +3 -3
- data/lib/sequencescape/plate_creation.rb +3 -3
- data/lib/sequencescape/plate_purpose.rb +3 -3
- data/lib/sequencescape/plate_template.rb +0 -2
- data/lib/sequencescape/pooled_plate_creation.rb +3 -3
- data/lib/sequencescape/project.rb +2 -1
- data/lib/sequencescape/qc_decision.rb +0 -1
- data/lib/sequencescape/qc_file.rb +0 -3
- data/lib/sequencescape/qcable.rb +0 -3
- data/lib/sequencescape/qcable_creator.rb +1 -4
- data/lib/sequencescape/request.rb +3 -3
- data/lib/sequencescape/search.rb +10 -8
- data/lib/sequencescape/specific_tube_creation.rb +2 -2
- data/lib/sequencescape/stamp.rb +0 -1
- data/lib/sequencescape/state_change.rb +2 -2
- data/lib/sequencescape/study.rb +1 -1
- data/lib/sequencescape/submission.rb +1 -2
- data/lib/sequencescape/tag2_layout.rb +3 -3
- data/lib/sequencescape/tag2_layout_template.rb +2 -2
- data/lib/sequencescape/tag_group.rb +0 -1
- data/lib/sequencescape/tag_layout.rb +3 -3
- data/lib/sequencescape/tag_layout_template.rb +4 -4
- data/lib/sequencescape/transfer.rb +2 -2
- data/lib/sequencescape/transfer_request.rb +5 -7
- data/lib/sequencescape/transfer_template.rb +2 -2
- data/lib/sequencescape/tube.rb +3 -3
- data/lib/sequencescape/tube_creation.rb +3 -3
- data/lib/sequencescape/tube_from_tube_creation.rb +3 -3
- data/lib/sequencescape/tube_purpose.rb +3 -3
- data/lib/sequencescape/user.rb +2 -2
- data/lib/sequencescape/volume_update.rb +1 -1
- data/lib/sequencescape/well.rb +0 -2
- data/lib/sequencescape/work_completion.rb +1 -1
- data/sequencescape-api.gemspec +18 -17
- data/spec/sequencescape-api/associations_spec.rb +4 -2
- data/spec/sequencescape-api/finding_methods_spec.rb +3 -1
- data/spec/sequencescape-api/modifications_spec.rb +17 -16
- data/spec/sequencescape-api/root_spec.rb +11 -6
- data/spec/spec_helper.rb +3 -1
- data/spec/support/contract_helper.rb +18 -10
- data/spec/support/namespaces.rb +9 -9
- data/spec/support/shared_examples.rb +2 -0
- metadata +54 -36
- data/.rvmrc +0 -52
data/sequencescape-api.gemspec
CHANGED
@@ -1,32 +1,33 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "sequencescape-api/version"
|
1
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
2
|
+
require 'sequencescape-api/version'
|
4
3
|
|
5
4
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
5
|
+
s.name = 'sequencescape-client-api'
|
7
6
|
s.version = Sequencescape::Api::VERSION
|
8
7
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = [
|
10
|
-
s.email = [
|
11
|
-
s.homepage =
|
12
|
-
s.summary =
|
13
|
-
s.description =
|
8
|
+
s.authors = ['Matthew Denner', 'James Glover', 'Eduardo Martin Rojo']
|
9
|
+
s.email = ['md12@sanger.ac.uk', 'james.glover@sanger.ac.uk', 'emr@sanger.ac.uk']
|
10
|
+
s.homepage = ''
|
11
|
+
s.summary = 'Gem for the client side of the Sequencescape API'
|
12
|
+
s.description = 'Provides all of the necessary code for interacting with the Sequencescape API'
|
14
13
|
|
15
|
-
s.rubyforge_project =
|
14
|
+
s.rubyforge_project = 'sequencescape-client-api'
|
16
15
|
|
17
16
|
s.files = `git ls-files`.split("\n")
|
18
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = [
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
+
s.require_paths = ['lib']
|
21
20
|
|
22
|
-
s.add_dependency('
|
23
|
-
s.add_dependency('
|
21
|
+
s.add_dependency('activemodel', '>= 5.0.0')
|
22
|
+
s.add_dependency('activesupport', '>= 5.0.0')
|
24
23
|
s.add_dependency('i18n')
|
25
|
-
s.add_dependency('yajl-ruby', '>= 1.
|
24
|
+
s.add_dependency('yajl-ruby', '>= 1.4.1')
|
26
25
|
|
27
|
-
s.add_development_dependency('rspec', '~> 2.11.0')
|
28
26
|
s.add_development_dependency('pry')
|
27
|
+
s.add_development_dependency('rake')
|
28
|
+
s.add_development_dependency('redcarpet')
|
29
|
+
s.add_development_dependency('rspec', '~> 2.11.0')
|
30
|
+
s.add_development_dependency('rubocop', '~> 0.84.0')
|
29
31
|
s.add_development_dependency('webmock')
|
30
32
|
s.add_development_dependency('yard')
|
31
|
-
s.add_development_dependency('redcarpet')
|
32
33
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe 'Various associations' do
|
@@ -51,7 +53,7 @@ describe 'Various associations' do
|
|
51
53
|
stub_request_from('retrieve-model') { response('model-a-instance') }
|
52
54
|
stub_request_from('create-via-has-many') { response('model-b-instance') }
|
53
55
|
|
54
|
-
subject { api.model_a.find('UUID').model_bs.create!
|
56
|
+
subject { api.model_a.find('UUID').model_bs.create! }
|
55
57
|
|
56
58
|
its(:class) { should == Unauthorised::ModelB }
|
57
59
|
end
|
@@ -62,7 +64,7 @@ describe 'Various associations' do
|
|
62
64
|
|
63
65
|
let(:resource) { api.model_b.find('UUID') }
|
64
66
|
|
65
|
-
[
|
67
|
+
%i[model_a model_by_simple_name model_by_full_name].each do |association_name|
|
66
68
|
context "expressed as #{association_name.inspect}" do
|
67
69
|
stub_request_and_response('belongs-to-association')
|
68
70
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe 'Finding a resource instance' do
|
@@ -9,7 +11,7 @@ describe 'Finding a resource instance' do
|
|
9
11
|
stub_request_from('retrieve-model') { response('resource-not-found') }
|
10
12
|
|
11
13
|
it 'raises an exception' do
|
12
|
-
|
14
|
+
-> { subject }.should raise_error(Sequencescape::Api::ResourceNotFound)
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
@@ -1,18 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
shared_examples_for 'errors on both client and server' do |action, request_contract|
|
4
6
|
context 'may be invalid on the client side' do
|
5
7
|
it 'raises an error' do
|
6
8
|
lambda do
|
7
|
-
target.__send__(action, :
|
9
|
+
target.__send__(action, attribute_validated_at_client: 'please error')
|
8
10
|
end.should raise_error(Sequencescape::Api::ResourceInvalid)
|
9
11
|
end
|
10
12
|
|
11
13
|
it 'includes the error on the field' do
|
12
14
|
begin
|
13
|
-
target.__send__(action, :
|
14
|
-
rescue Sequencescape::Api::ResourceInvalid =>
|
15
|
-
|
15
|
+
target.__send__(action, attribute_validated_at_client: 'please error')
|
16
|
+
rescue Sequencescape::Api::ResourceInvalid => e
|
17
|
+
e.resource.errors[:attribute_validated_at_client].should == ['cannot be set']
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
@@ -22,15 +24,15 @@ shared_examples_for 'errors on both client and server' do |action, request_contr
|
|
22
24
|
|
23
25
|
it 'raises an error' do
|
24
26
|
lambda do
|
25
|
-
target.__send__(action, :
|
27
|
+
target.__send__(action, attribute_validated_at_server: 'please error')
|
26
28
|
end.should raise_error(Sequencescape::Api::ResourceInvalid)
|
27
29
|
end
|
28
30
|
|
29
31
|
it 'includes the error on the field' do
|
30
32
|
begin
|
31
|
-
target.__send__(action, :
|
32
|
-
rescue Sequencescape::Api::ResourceInvalid =>
|
33
|
-
|
33
|
+
target.__send__(action, attribute_validated_at_server: 'please error')
|
34
|
+
rescue Sequencescape::Api::ResourceInvalid => e
|
35
|
+
e.resource.errors[:attribute_validated_at_server].should == ['cannot be set']
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
@@ -49,7 +51,7 @@ describe 'Creating a resource' do
|
|
49
51
|
stub_request_from('create-model-c') { response('model-c-instance-created') }
|
50
52
|
|
51
53
|
subject do
|
52
|
-
target.create!(:
|
54
|
+
target.create!(changes_during_update: 'sent from client', remains_same_during_update: 'from JSON')
|
53
55
|
end
|
54
56
|
|
55
57
|
its(:changes_during_update) { should == 'set during create' }
|
@@ -65,7 +67,7 @@ describe 'Creating a resource' do
|
|
65
67
|
|
66
68
|
it 'takes an array of objects and converts them to UUID'
|
67
69
|
it 'assumes an array of strings are UUIDs' do
|
68
|
-
target.create!(:
|
70
|
+
target.create!(model_bs: ['model-b-uuids'])
|
69
71
|
end
|
70
72
|
it 'raises if not given an enumerable'
|
71
73
|
end
|
@@ -75,7 +77,7 @@ describe 'Creating a resource' do
|
|
75
77
|
|
76
78
|
it 'takes an array of objects and converts them to UUID'
|
77
79
|
it 'assumes an array of strings are UUIDs' do
|
78
|
-
target.create!(:
|
80
|
+
target.create!(model_bs: [{ 'test_attribute' => 'test_value' }])
|
79
81
|
end
|
80
82
|
it 'raises if not given an enumerable'
|
81
83
|
end
|
@@ -85,7 +87,7 @@ describe 'Creating a resource' do
|
|
85
87
|
|
86
88
|
it 'takes an array of objects and converts them to UUID'
|
87
89
|
it 'assumes an array of strings are UUIDs' do
|
88
|
-
target.create!(:
|
90
|
+
target.create!(model_as: ['model-a-uuids'])
|
89
91
|
end
|
90
92
|
it 'raises if not given an enumerable'
|
91
93
|
end
|
@@ -120,9 +122,9 @@ describe 'Updating a resource' do
|
|
120
122
|
|
121
123
|
before(:each) do
|
122
124
|
subject.update_attributes!(
|
123
|
-
:
|
124
|
-
:
|
125
|
-
:
|
125
|
+
changes_during_update: 'sent from client',
|
126
|
+
remains_same_during_update: 'from JSON',
|
127
|
+
write_only: 'has been set'
|
126
128
|
)
|
127
129
|
end
|
128
130
|
|
@@ -166,4 +168,3 @@ describe 'Updating a resource through an association' do
|
|
166
168
|
it 'handles individual attribute changes'
|
167
169
|
end
|
168
170
|
end
|
169
|
-
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe 'Handling authentication issues' do
|
4
6
|
stub_request_from('retrieve-root-with-an-unauthorised-client') { response('client-fails-authentication') }
|
5
7
|
|
6
|
-
subject { Sequencescape::Api.new(:
|
8
|
+
subject { Sequencescape::Api.new(url: 'http://localhost:3000/', cookie: 'single-sign-on-cookie') }
|
7
9
|
|
8
10
|
it 'raises an exception' do
|
9
|
-
|
11
|
+
-> { subject }.should raise_error(Sequencescape::Api::UnauthenticatedError)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
@@ -15,7 +17,7 @@ describe 'Retrieving the root URL' do
|
|
15
17
|
is_working_as_an_unauthorised_client
|
16
18
|
|
17
19
|
context 'with no namespace' do
|
18
|
-
subject { Sequencescape::Api.new(:
|
20
|
+
subject { Sequencescape::Api.new(url: 'http://localhost:3000/', cookie: 'single-sign-on-cookie') }
|
19
21
|
|
20
22
|
Unauthorised::MODELS_THROUGH_API.each do |model|
|
21
23
|
it "provides the #{model} through the API instance" do
|
@@ -24,12 +26,15 @@ describe 'Retrieving the root URL' do
|
|
24
26
|
|
25
27
|
it "errors because Sequencescape::#{model.to_s.classify} is not defined" do
|
26
28
|
# Note: Using a regex as > Ruby 2.3 'DidYouMean' changes the error message slightly.
|
27
|
-
lambda {
|
29
|
+
lambda {
|
30
|
+
subject.send(model.to_sym)
|
31
|
+
}.should raise_error(NameError,
|
32
|
+
/uninitialized constant Sequencescape::#{model.to_s.classify}/)
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
32
|
-
context
|
37
|
+
context 'with a specified namespace' do
|
33
38
|
Unauthorised::MODELS_THROUGH_API.each do |model|
|
34
39
|
context do
|
35
40
|
stub_request_and_response("unauthorised-#{model.to_s.dasherize}-list")
|
@@ -49,7 +54,7 @@ describe 'Retrieving the root URL' do
|
|
49
54
|
|
50
55
|
subject { api }
|
51
56
|
|
52
|
-
[
|
57
|
+
%i[model_c model_d].each do |model|
|
53
58
|
it "provides the #{model} through the API instance" do
|
54
59
|
subject.should respond_to(model.to_sym)
|
55
60
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sequencescape-api'
|
2
4
|
require 'sequencescape'
|
3
5
|
|
4
6
|
# Make sure our support files can be loaded when required
|
5
|
-
|
7
|
+
$LOAD_PATH.push(File.expand_path(File.join(File.dirname(__FILE__), 'support')))
|
6
8
|
require 'contract_helper'
|
7
9
|
require 'namespaces'
|
8
10
|
require 'shared_examples'
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Fake the web connections so we don't trash anything
|
2
4
|
require 'webmock/rspec'
|
3
5
|
|
@@ -21,13 +23,16 @@ module ContractHelper
|
|
21
23
|
\g<verb>\s+\g<path>\s+HTTP/1.1\g<eol>
|
22
24
|
\g<headers>\g<eol>
|
23
25
|
(\g<eol>\g<body>?)?
|
24
|
-
}mx
|
26
|
+
}mx.freeze
|
25
27
|
|
26
28
|
def request(contract_name)
|
27
29
|
contract(contract_name) do |file|
|
28
|
-
match = REQUEST_REGEXP.match(file.read)
|
30
|
+
match = REQUEST_REGEXP.match(file.read)
|
31
|
+
|
32
|
+
raise StandardError, "Invalidly formatted request in #{contract_name.inspect}" if match.nil?
|
29
33
|
|
30
|
-
@http_verb
|
34
|
+
@http_verb = match[:verb].downcase.to_sym
|
35
|
+
@url = "http://localhost:3000#{match[:path]}"
|
31
36
|
@conditions = {}
|
32
37
|
@conditions[:headers] = Hash[*match[:headers].split(/\r?\n/).map { |l| l.split(':') }.flatten.map(&:strip)]
|
33
38
|
@conditions[:body] = Yajl::Encoder.encode(Yajl::Parser.parse(match[:body])) unless match[:body].blank?
|
@@ -40,11 +45,12 @@ module ContractHelper
|
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
43
|
-
def contract(contract_name
|
48
|
+
def contract(contract_name)
|
44
49
|
path = @root.dup
|
45
50
|
until path.empty?
|
46
51
|
filename = File.join(path, 'contracts', "#{contract_name}.txt")
|
47
52
|
return File.open(filename, 'r') { |file| yield(file) } if File.file?(filename)
|
53
|
+
|
48
54
|
path.pop
|
49
55
|
end
|
50
56
|
raise StandardError, "Cannot find contract #{filename.inspect} anywhere within #{@root.inspect}"
|
@@ -74,7 +80,7 @@ module ContractHelper
|
|
74
80
|
|
75
81
|
module ClassMethods
|
76
82
|
def stub_request_from(request_filename, &block)
|
77
|
-
stubbed_request = StubRequestBuilder.new(File.join(File.dirname(__FILE__), %w
|
83
|
+
stubbed_request = StubRequestBuilder.new(File.join(File.dirname(__FILE__), %w[.. sequencescape-api contracts]))
|
78
84
|
stubbed_request.request(request_filename)
|
79
85
|
stubbed_request.instance_eval(&block)
|
80
86
|
stubbed_request.inject_into(self)
|
@@ -85,11 +91,13 @@ module ContractHelper
|
|
85
91
|
end
|
86
92
|
|
87
93
|
def is_working_as_an_unauthorised_client
|
88
|
-
stub_request_from('retrieve-root-with-an-unauthorised-client')
|
94
|
+
stub_request_from('retrieve-root-with-an-unauthorised-client') do
|
95
|
+
response('root-response-for-unauthorised-client')
|
96
|
+
end
|
89
97
|
let(:api) do
|
90
98
|
Sequencescape::Api.new(
|
91
|
-
:
|
92
|
-
:
|
99
|
+
url: 'http://localhost:3000/', cookie: 'single-sign-on-cookie',
|
100
|
+
namespace: Unauthorised
|
93
101
|
)
|
94
102
|
end
|
95
103
|
end
|
@@ -99,8 +107,8 @@ module ContractHelper
|
|
99
107
|
|
100
108
|
let(:api) do
|
101
109
|
Sequencescape::Api.new(
|
102
|
-
:
|
103
|
-
:
|
110
|
+
url: 'http://localhost:3000/', cookie: 'single-sign-on-cookie',
|
111
|
+
authorisation: 'authorised!', namespace: Authenticated
|
104
112
|
)
|
105
113
|
end
|
106
114
|
end
|
data/spec/support/namespaces.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Unauthorised
|
2
|
-
MODELS_THROUGH_API = [
|
4
|
+
MODELS_THROUGH_API = %i[model_a model_b model_c].freeze
|
3
5
|
|
4
6
|
class ModelA < Sequencescape::Api::Resource
|
5
7
|
module LotCreator
|
6
|
-
def create!(attributes=nil)
|
8
|
+
def create!(attributes = nil)
|
7
9
|
attributes ||= {}
|
8
10
|
new({}, false).tap do |lot|
|
9
11
|
api.create(actions.create, { 'model_b' => attributes }, Sequencescape::Api::ModifyingHandler.new(lot))
|
@@ -24,14 +26,14 @@ module Unauthorised
|
|
24
26
|
|
25
27
|
class ModelB < Sequencescape::Api::Resource
|
26
28
|
belongs_to :model_a
|
27
|
-
belongs_to :model_by_simple_name, :
|
28
|
-
belongs_to :model_by_full_name, :
|
29
|
-
belongs_to :model_with_early_data, :
|
29
|
+
belongs_to :model_by_simple_name, class_name: 'ModelA'
|
30
|
+
belongs_to :model_by_full_name, class_name: 'Nested::Model'
|
31
|
+
belongs_to :model_with_early_data, class_name: 'ModelA'
|
30
32
|
attribute_accessor :test_attribute
|
31
33
|
end
|
32
34
|
|
33
35
|
class ModelC < Sequencescape::Api::Resource
|
34
|
-
has_many :model_bs, :
|
36
|
+
has_many :model_bs, disposition: :inline
|
35
37
|
has_many :model_as
|
36
38
|
|
37
39
|
attribute_accessor :attribute_validated_at_client, :attribute_validated_at_server
|
@@ -56,12 +58,10 @@ module Unauthorised
|
|
56
58
|
end
|
57
59
|
|
58
60
|
module Authenticated
|
59
|
-
MODELS_THROUGH_API = [
|
61
|
+
MODELS_THROUGH_API = %i[model_c model_d].freeze
|
60
62
|
|
61
63
|
class ModelC < Sequencescape::Api::Resource
|
62
|
-
|
63
64
|
end
|
64
65
|
class ModelD < Sequencescape::Api::Resource
|
65
|
-
|
66
66
|
end
|
67
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequencescape-client-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.pre.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Denner
|
@@ -10,48 +10,36 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2020-05-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: activemodel
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
- - "<"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '5.2'
|
21
|
+
version: 5.0.0
|
25
22
|
type: :runtime
|
26
23
|
prerelease: false
|
27
24
|
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
requirements:
|
29
26
|
- - ">="
|
30
27
|
- !ruby/object:Gem::Version
|
31
|
-
version:
|
32
|
-
- - "<"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '5.2'
|
28
|
+
version: 5.0.0
|
35
29
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
30
|
+
name: activesupport
|
37
31
|
requirement: !ruby/object:Gem::Requirement
|
38
32
|
requirements:
|
39
33
|
- - ">="
|
40
34
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
42
|
-
- - "<"
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '5.2'
|
35
|
+
version: 5.0.0
|
45
36
|
type: :runtime
|
46
37
|
prerelease: false
|
47
38
|
version_requirements: !ruby/object:Gem::Requirement
|
48
39
|
requirements:
|
49
40
|
- - ">="
|
50
41
|
- !ruby/object:Gem::Version
|
51
|
-
version:
|
52
|
-
- - "<"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.2'
|
42
|
+
version: 5.0.0
|
55
43
|
- !ruby/object:Gem::Dependency
|
56
44
|
name: i18n
|
57
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,30 +60,30 @@ dependencies:
|
|
72
60
|
requirements:
|
73
61
|
- - ">="
|
74
62
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
63
|
+
version: 1.4.1
|
76
64
|
type: :runtime
|
77
65
|
prerelease: false
|
78
66
|
version_requirements: !ruby/object:Gem::Requirement
|
79
67
|
requirements:
|
80
68
|
- - ">="
|
81
69
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
70
|
+
version: 1.4.1
|
83
71
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
72
|
+
name: pry
|
85
73
|
requirement: !ruby/object:Gem::Requirement
|
86
74
|
requirements:
|
87
|
-
- - "
|
75
|
+
- - ">="
|
88
76
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
77
|
+
version: '0'
|
90
78
|
type: :development
|
91
79
|
prerelease: false
|
92
80
|
version_requirements: !ruby/object:Gem::Requirement
|
93
81
|
requirements:
|
94
|
-
- - "
|
82
|
+
- - ">="
|
95
83
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
84
|
+
version: '0'
|
97
85
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
86
|
+
name: rake
|
99
87
|
requirement: !ruby/object:Gem::Requirement
|
100
88
|
requirements:
|
101
89
|
- - ">="
|
@@ -109,7 +97,7 @@ dependencies:
|
|
109
97
|
- !ruby/object:Gem::Version
|
110
98
|
version: '0'
|
111
99
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
100
|
+
name: redcarpet
|
113
101
|
requirement: !ruby/object:Gem::Requirement
|
114
102
|
requirements:
|
115
103
|
- - ">="
|
@@ -123,7 +111,35 @@ dependencies:
|
|
123
111
|
- !ruby/object:Gem::Version
|
124
112
|
version: '0'
|
125
113
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
114
|
+
name: rspec
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.11.0
|
120
|
+
type: :development
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 2.11.0
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: rubocop
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 0.84.0
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 0.84.0
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: webmock
|
127
143
|
requirement: !ruby/object:Gem::Requirement
|
128
144
|
requirements:
|
129
145
|
- - ">="
|
@@ -137,7 +153,7 @@ dependencies:
|
|
137
153
|
- !ruby/object:Gem::Version
|
138
154
|
version: '0'
|
139
155
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
156
|
+
name: yard
|
141
157
|
requirement: !ruby/object:Gem::Requirement
|
142
158
|
requirements:
|
143
159
|
- - ">="
|
@@ -162,7 +178,9 @@ extra_rdoc_files: []
|
|
162
178
|
files:
|
163
179
|
- ".gitignore"
|
164
180
|
- ".rspec"
|
165
|
-
- ".
|
181
|
+
- ".rubocop.yml"
|
182
|
+
- ".rubocop_todo.yml"
|
183
|
+
- ".ruby-version"
|
166
184
|
- ".yardoc/checksums"
|
167
185
|
- ".yardoc/complete"
|
168
186
|
- ".yardoc/object_types"
|
@@ -374,6 +392,7 @@ files:
|
|
374
392
|
- lib/sequencescape/bulk_transfer.rb
|
375
393
|
- lib/sequencescape/comment.rb
|
376
394
|
- lib/sequencescape/custom_metadatum_collection.rb
|
395
|
+
- lib/sequencescape/extraction_attribute.rb
|
377
396
|
- lib/sequencescape/lane.rb
|
378
397
|
- lib/sequencescape/library_event.rb
|
379
398
|
- lib/sequencescape/library_tube.rb
|
@@ -485,12 +504,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
485
504
|
version: '0'
|
486
505
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
487
506
|
requirements:
|
488
|
-
- - "
|
507
|
+
- - ">"
|
489
508
|
- !ruby/object:Gem::Version
|
490
|
-
version:
|
509
|
+
version: 1.3.1
|
491
510
|
requirements: []
|
492
|
-
|
493
|
-
rubygems_version: 2.6.14
|
511
|
+
rubygems_version: 3.0.8
|
494
512
|
signing_key:
|
495
513
|
specification_version: 4
|
496
514
|
summary: Gem for the client side of the Sequencescape API
|