sequencescape-client-api 0.3.7 → 0.4.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +44 -0
  3. data/.rubocop_todo.yml +338 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +1 -1
  6. data/README.markdown +13 -0
  7. data/lib/sequencescape-api.rb +1 -1
  8. data/lib/sequencescape-api/actions.rb +9 -8
  9. data/lib/sequencescape-api/associations.rb +8 -6
  10. data/lib/sequencescape-api/associations/base.rb +1 -1
  11. data/lib/sequencescape-api/associations/base/instance_methods.rb +10 -8
  12. data/lib/sequencescape-api/associations/belongs_to.rb +4 -4
  13. data/lib/sequencescape-api/associations/has_many.rb +14 -13
  14. data/lib/sequencescape-api/associations/has_many/json.rb +1 -1
  15. data/lib/sequencescape-api/associations/has_many/validation.rb +1 -1
  16. data/lib/sequencescape-api/composition.rb +11 -7
  17. data/lib/sequencescape-api/connection_factory.rb +6 -5
  18. data/lib/sequencescape-api/connection_factory/actions.rb +17 -12
  19. data/lib/sequencescape-api/core.rb +12 -7
  20. data/lib/sequencescape-api/core_ext/array.rb +1 -1
  21. data/lib/sequencescape-api/core_ext/hash.rb +3 -3
  22. data/lib/sequencescape-api/errors.rb +2 -2
  23. data/lib/sequencescape-api/finder_methods.rb +16 -11
  24. data/lib/sequencescape-api/rails.rb +8 -7
  25. data/lib/sequencescape-api/resource/active_model.rb +1 -1
  26. data/lib/sequencescape-api/resource/attribute_groups.rb +11 -7
  27. data/lib/sequencescape-api/resource/attributes.rb +8 -8
  28. data/lib/sequencescape-api/resource/instance_methods.rb +17 -9
  29. data/lib/sequencescape-api/resource/json.rb +18 -15
  30. data/lib/sequencescape-api/resource/modifications.rb +20 -11
  31. data/lib/sequencescape-api/resource_model_proxy.rb +7 -5
  32. data/lib/sequencescape-api/version.rb +1 -1
  33. data/lib/sequencescape.rb +4 -2
  34. data/lib/sequencescape/bait_library.rb +1 -1
  35. data/lib/sequencescape/bait_library_layout.rb +2 -2
  36. data/lib/sequencescape/barcoded_asset.rb +1 -1
  37. data/lib/sequencescape/batch.rb +6 -6
  38. data/lib/sequencescape/behaviour/qced.rb +3 -4
  39. data/lib/sequencescape/behaviour/receptacle.rb +3 -3
  40. data/lib/sequencescape/behaviour/state_driven.rb +4 -4
  41. data/lib/sequencescape/bulk_transfer.rb +1 -1
  42. data/lib/sequencescape/comment.rb +0 -2
  43. data/lib/sequencescape/extraction_attribute.rb +6 -0
  44. data/lib/sequencescape/library_event.rb +1 -1
  45. data/lib/sequencescape/library_tube.rb +1 -1
  46. data/lib/sequencescape/lot.rb +0 -1
  47. data/lib/sequencescape/lot_type.rb +1 -2
  48. data/lib/sequencescape/order_template.rb +1 -2
  49. data/lib/sequencescape/pipeline.rb +1 -1
  50. data/lib/sequencescape/plate.rb +29 -11
  51. data/lib/sequencescape/plate/pooling.rb +9 -3
  52. data/lib/sequencescape/plate/well_structure.rb +6 -6
  53. data/lib/sequencescape/plate_conversion.rb +3 -3
  54. data/lib/sequencescape/plate_creation.rb +3 -3
  55. data/lib/sequencescape/plate_purpose.rb +3 -3
  56. data/lib/sequencescape/plate_template.rb +0 -2
  57. data/lib/sequencescape/pooled_plate_creation.rb +3 -3
  58. data/lib/sequencescape/project.rb +2 -1
  59. data/lib/sequencescape/qc_decision.rb +0 -1
  60. data/lib/sequencescape/qc_file.rb +0 -3
  61. data/lib/sequencescape/qcable.rb +0 -3
  62. data/lib/sequencescape/qcable_creator.rb +1 -4
  63. data/lib/sequencescape/request.rb +3 -3
  64. data/lib/sequencescape/search.rb +10 -8
  65. data/lib/sequencescape/specific_tube_creation.rb +2 -2
  66. data/lib/sequencescape/stamp.rb +0 -1
  67. data/lib/sequencescape/state_change.rb +2 -2
  68. data/lib/sequencescape/study.rb +1 -1
  69. data/lib/sequencescape/submission.rb +1 -2
  70. data/lib/sequencescape/tag2_layout.rb +3 -3
  71. data/lib/sequencescape/tag2_layout_template.rb +2 -2
  72. data/lib/sequencescape/tag_group.rb +0 -1
  73. data/lib/sequencescape/tag_layout.rb +3 -3
  74. data/lib/sequencescape/tag_layout_template.rb +4 -4
  75. data/lib/sequencescape/transfer.rb +2 -2
  76. data/lib/sequencescape/transfer_request.rb +5 -7
  77. data/lib/sequencescape/transfer_template.rb +2 -2
  78. data/lib/sequencescape/tube.rb +3 -3
  79. data/lib/sequencescape/tube_creation.rb +3 -3
  80. data/lib/sequencescape/tube_from_tube_creation.rb +3 -3
  81. data/lib/sequencescape/tube_purpose.rb +3 -3
  82. data/lib/sequencescape/user.rb +2 -2
  83. data/lib/sequencescape/volume_update.rb +1 -1
  84. data/lib/sequencescape/well.rb +0 -2
  85. data/lib/sequencescape/work_completion.rb +1 -1
  86. data/sequencescape-api.gemspec +18 -17
  87. data/spec/sequencescape-api/associations_spec.rb +4 -2
  88. data/spec/sequencescape-api/finding_methods_spec.rb +3 -1
  89. data/spec/sequencescape-api/modifications_spec.rb +17 -16
  90. data/spec/sequencescape-api/root_spec.rb +11 -6
  91. data/spec/spec_helper.rb +3 -1
  92. data/spec/support/contract_helper.rb +18 -10
  93. data/spec/support/namespaces.rb +9 -9
  94. data/spec/support/shared_examples.rb +2 -0
  95. metadata +54 -36
  96. data/.rvmrc +0 -52
@@ -4,7 +4,7 @@ class Sequencescape::PlatePurpose < ::Sequencescape::Api::Resource
4
4
  module PlateCreation
5
5
  def create!(attributes = nil)
6
6
  attributes ||= {}
7
- attributes[:wells].delete_if { |_,v| v.blank? } if attributes.key?(:wells)
7
+ attributes[:wells].delete_if { |_, v| v.blank? } if attributes.key?(:wells)
8
8
 
9
9
  new({}, false).tap do |plate|
10
10
  api.create(actions.create, { 'plate' => attributes }, Sequencescape::Api::ModifyingHandler.new(plate))
@@ -12,8 +12,8 @@ class Sequencescape::PlatePurpose < ::Sequencescape::Api::Resource
12
12
  end
13
13
  end
14
14
 
15
- has_many :children, :class_name => 'PlatePurpose'
16
- has_many :parents, :class_name => 'PlatePurpose'
15
+ has_many :children, class_name: 'PlatePurpose'
16
+ has_many :parents, class_name: 'PlatePurpose'
17
17
 
18
18
  has_many :plates do
19
19
  include Sequencescape::PlatePurpose::PlateCreation
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape/asset'
2
2
 
3
3
  class Sequencescape::PlateTemplate < ::Sequencescape::Asset
4
-
5
4
  require 'sequencescape/plate/well_structure'
6
5
 
7
6
  include Sequencescape::Plate::WellStructure
@@ -9,5 +8,4 @@ class Sequencescape::PlateTemplate < ::Sequencescape::Asset
9
8
  has_many :wells
10
9
 
11
10
  attribute_accessor :size, :name
12
-
13
11
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::PooledPlateCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- has_many :parents, :class_name => 'Plate', :disposition => :inline
6
- belongs_to :child_purpose, :class_name => 'PlatePurpose'
7
- belongs_to :child, :class_name => 'Plate'
5
+ has_many :parents, class_name: 'Plate', disposition: :inline
6
+ belongs_to :child_purpose, class_name: 'PlatePurpose'
7
+ belongs_to :child, class_name: 'Plate'
8
8
  end
@@ -5,7 +5,8 @@ class Sequencescape::Project < ::Sequencescape::Api::Resource
5
5
 
6
6
  attribute_accessor :name
7
7
  attribute_accessor :approved, :state
8
- attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division, :budget_cost_centre, :funding_model
8
+ attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division
9
+ attribute_accessor :budget_cost_centre, :funding_model
9
10
  attribute_accessor :collaborators
10
11
  attribute_accessor :roles
11
12
  end
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::QcDecision < ::Sequencescape::Api::Resource
4
-
5
4
  belongs_to :user
6
5
  belongs_to :lot
7
6
 
@@ -1,8 +1,6 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::QcFile < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :asset
7
5
 
8
6
  attribute_accessor :filename, :size
@@ -10,5 +8,4 @@ class Sequencescape::QcFile < ::Sequencescape::Api::Resource
10
8
  def retrieve
11
9
  api.retrieve(actions.read, Sequencescape::Api::ModifyingHandler.new(self), 'sequencescape/qc_file')
12
10
  end
13
-
14
11
  end
@@ -1,8 +1,6 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::Qcable < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :lot
7
5
  belongs_to :qcable_creator
8
6
  belongs_to :asset
@@ -14,5 +12,4 @@ class Sequencescape::Qcable < ::Sequencescape::Api::Resource
14
12
  attribute_accessor :ean13 # The EAN13 barcode number
15
13
  attribute_accessor :machine # The barcode printed on the label
16
14
  end
17
-
18
15
  end
@@ -1,13 +1,10 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::QcableCreator < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :user
7
5
  belongs_to :lot
8
6
 
9
7
  has_many :qcables
10
8
 
11
- attribute_accessor :count
12
-
9
+ attribute_accessor :count, :barcodes
13
10
  end
@@ -6,11 +6,11 @@ class Sequencescape::Request < ::Sequencescape::Api::Resource
6
6
  belongs_to :sample
7
7
  belongs_to :submission
8
8
 
9
- belongs_to :source_asset, :class_name => 'Asset'
10
- belongs_to :target_asset, :class_name => 'Asset'
9
+ belongs_to :source_asset, class_name: 'Asset'
10
+ belongs_to :target_asset, class_name: 'Asset'
11
11
 
12
12
  attribute_accessor :type, :state
13
- validates_inclusion_of :state, :in => %w{pending started failed passed cancelled blocked hold}
13
+ validates_inclusion_of :state, in: %w[pending started failed passed cancelled blocked hold]
14
14
 
15
15
  attribute_accessor :read_length, :library_type, :fragment_size
16
16
  end
@@ -4,7 +4,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
4
4
  class BaseHandler
5
5
  include Sequencescape::Api::BasicErrorHandling
6
6
 
7
- def success(attributes)
7
+ def success(_attributes)
8
8
  raise Sequencescape::Api::Error, 'A success response from a search is unexpected'
9
9
  end
10
10
  end
@@ -17,7 +17,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
17
17
  @api = api
18
18
  end
19
19
 
20
- def redirection(json, &block)
20
+ def redirection(json)
21
21
  json.delete('uuids_to_ids')
22
22
  Sequencescape::Api::FinderMethods::FindByUuidHandler.new(@api.send(json.keys.first)).success(json)
23
23
  end
@@ -28,6 +28,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
28
28
  class MultipleResultPaged
29
29
  include Enumerable
30
30
  attr_reader :objects, :size
31
+
31
32
  def initialize(objects, size)
32
33
  @objects = objects
33
34
  @size = size
@@ -39,18 +40,19 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
39
40
  # The response from the server contains the JSON for each of the resources found. We simply
40
41
  # need to be able to create the resources from each of these.
41
42
  class MultipleResultHandler
42
- def initialize(api,model)
43
- @api, @model = api, model
43
+ def initialize(api, model)
44
+ @api = api
45
+ @model = model
44
46
  end
45
47
 
46
- def redirection(json, &block)
48
+ def redirection(json)
47
49
  items = json['searches'].map(&method(:new))
48
50
  size = json['size']
49
51
  MultipleResultPaged.new(items, size)
50
52
  end
51
53
 
52
54
  def new(json)
53
- args = [ json, false ]
55
+ args = [json, false]
54
56
  args.unshift(@api) unless @model.is_a_proxied_model?
55
57
  @model.new(*args)
56
58
  end
@@ -59,11 +61,11 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
59
61
 
60
62
  def self.search_action(name)
61
63
  line = __LINE__ + 1
62
- class_eval(%Q{
64
+ class_eval("
63
65
  def #{name}(criteria = {})
64
66
  api.create(actions.#{name}, { 'search' => criteria }, SingleResultHandler.new(api))
65
67
  end
66
- }, __FILE__, line)
68
+ ", __FILE__, line)
67
69
  end
68
70
 
69
71
  attribute_reader :name
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::SpecificTubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
5
+ belongs_to :parent, class_name: 'Plate'
6
6
  attribute_writer :child_purposes, :tube_attributes
7
- has_many :children, :class_name => 'Tube'
7
+ has_many :children, class_name: 'Tube'
8
8
  end
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::Stamp < ::Sequencescape::Api::Resource
4
-
5
4
  belongs_to :user
6
5
  belongs_to :lot
7
6
  belongs_to :robot
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::StateChange < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :target, :class_name => 'Asset', :disposition => :inline
6
- attribute_accessor :contents # Array of "contents" to fail, deciphered by the target, can be nil
5
+ belongs_to :target, class_name: 'Asset', disposition: :inline
6
+ attribute_accessor :contents # Array of "contents" to fail, deciphered by the target, can be nil
7
7
  attribute_accessor :target_state
8
8
  attribute_accessor :previous_state
9
9
  attribute_accessor :reason
@@ -10,5 +10,5 @@ class Sequencescape::Study < ::Sequencescape::Api::Resource
10
10
  attribute_accessor :contaminated_human_dna, :contains_human_dna
11
11
  attribute_accessor :data_release_sort_of_study, :data_release_strategy
12
12
 
13
- validates :name, :presence => true
13
+ validates :name, presence: true
14
14
  end
@@ -8,9 +8,8 @@ class Sequencescape::Submission < ::Sequencescape::Api::Resource
8
8
  # TODO: use a has many, but ensure it works
9
9
  attribute_accessor :orders
10
10
 
11
- has_update_action :submit!, :action => 'submit', :verb => :create, :skip_json => true
11
+ has_update_action :submit!, action: 'submit', verb: :create, skip_json: true
12
12
 
13
13
  attribute_reader :state
14
14
  attribute_reader :asset_group_name
15
-
16
15
  end
@@ -3,8 +3,8 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::Tag2Layout < ::Sequencescape::Api::Resource
5
5
  belongs_to :user
6
- belongs_to :plate, :class_name => 'Plate'
7
- belongs_to :source, :class_name => 'Asset'
8
- composed_of :tag, :class_name => 'Tag'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ belongs_to :source, class_name: 'Asset'
8
+ composed_of :tag, class_name: 'Tag'
9
9
  attribute_reader :target_well_locations
10
10
  end
@@ -3,7 +3,7 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::Tag2LayoutTemplate < ::Sequencescape::Api::Resource
5
5
  attribute_reader :name
6
- composed_of :tag, :class_name => 'Tag'
6
+ composed_of :tag, class_name: 'Tag'
7
7
 
8
- has_create_action :resource => 'tag2_layout'
8
+ has_create_action resource: 'tag2_layout'
9
9
  end
@@ -1,4 +1,3 @@
1
1
  class Sequencescape::TagGroup < ::Sequencescape::Api::Resource
2
-
3
2
  attribute_accessor :name, :tags, :created_at, :updated_at
4
3
  end
@@ -3,9 +3,9 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::TagLayout < ::Sequencescape::Api::Resource
5
5
  belongs_to :user
6
- belongs_to :plate, :class_name => 'Plate'
7
- composed_of :tag_group, :class_name => 'Tag::Group'
8
- composed_of :tag2_group, :class_name => 'Tag::Group'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ composed_of :tag_group, class_name: 'Tag::Group'
8
+ composed_of :tag2_group, class_name: 'Tag::Group'
9
9
 
10
10
  attribute_accessor :substitutions, :direction, :walking_by, :initial_tag, :tags_per_well
11
11
  end
@@ -3,11 +3,11 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::TagLayoutTemplate < ::Sequencescape::Api::Resource
5
5
  attribute_reader :name, :direction, :walking_by
6
- belongs_to :plate, :class_name => 'Plate'
7
- composed_of :tag_group, :class_name => 'Tag::Group'
8
- composed_of :tag2_group, :class_name => 'Tag::Group'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ composed_of :tag_group, class_name: 'Tag::Group'
8
+ composed_of :tag2_group, class_name: 'Tag::Group'
9
9
 
10
- has_create_action :resource => 'tag_layout'
10
+ has_create_action resource: 'tag_layout'
11
11
 
12
12
  def dual_index?
13
13
  tag2_group.present?
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::Transfer < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :source, :class_name => 'BarcodedAsset', :disposition => :inline
6
- belongs_to :destination, :class_name => 'BarcodedAsset', :disposition => :inline
5
+ belongs_to :source, class_name: 'BarcodedAsset', disposition: :inline
6
+ belongs_to :destination, class_name: 'BarcodedAsset', disposition: :inline
7
7
  attribute_reader :transfers
8
8
  attribute_accessor :targets
9
9
  end
@@ -1,12 +1,10 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TransferRequest < ::Sequencescape::Api::Resource
4
+ belongs_to :source_asset, class_name: 'Asset'
5
+ belongs_to :target_asset, class_name: 'Asset'
6
+ belongs_to :submission, class_name: 'Submission'
7
+ belongs_to :outer_request, class_name: 'Request'
4
8
 
5
- belongs_to :source_asset, :class_name => 'Asset'
6
- belongs_to :target_asset, :class_name => 'Asset'
7
- belongs_to :submission, :class_name => 'Submission'
8
- belongs_to :outer_request, :class_name => 'Request'
9
-
10
- attribute_accessor :type, :state, :submission_id
11
-
9
+ attribute_accessor :type, :state, :submission_id, :volume, :merge_equivalent_aliquots
12
10
  end
@@ -4,6 +4,6 @@ class Sequencescape::TransferTemplate < ::Sequencescape::Api::Resource
4
4
  attribute_reader :name
5
5
  attribute_reader :transfers
6
6
 
7
- has_create_action :resource => 'transfer'
8
- has_create_action :preview!, :action => :preview, :resource => 'transfer'
7
+ has_create_action resource: 'transfer'
8
+ has_create_action :preview!, action: :preview, resource: 'transfer'
9
9
  end
@@ -14,13 +14,13 @@ class Sequencescape::Tube < ::Sequencescape::Asset
14
14
 
15
15
  attribute_accessor :closed
16
16
  attribute_accessor :concentration, :volume
17
- attribute_accessor :scanned_in_date, :conversion => :to_time
17
+ attribute_accessor :scanned_in_date, conversion: :to_time
18
18
 
19
19
  attribute_reader :state
20
20
 
21
21
  attribute_accessor :sibling_tubes
22
22
 
23
- belongs_to :purpose, :class_name => 'TubePurpose'
24
- belongs_to :stock_plate, :class_name => 'Plate'
23
+ belongs_to :purpose, class_name: 'TubePurpose'
24
+ belongs_to :stock_plate, class_name: 'Plate'
25
25
  belongs_to :custom_metadatum_collection
26
26
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
6
- belongs_to :child_purpose, :class_name => 'TubePurpose'
7
- has_many :children, :class_name => 'Tube'
5
+ belongs_to :parent, class_name: 'Plate'
6
+ belongs_to :child_purpose, class_name: 'TubePurpose'
7
+ has_many :children, class_name: 'Tube'
8
8
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TubeFromTubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
6
- belongs_to :child_purpose, :class_name => 'TubePurpose'
7
- belongs_to :child, :class_name => 'Tube'
5
+ belongs_to :parent, class_name: 'Plate'
6
+ belongs_to :child_purpose, class_name: 'TubePurpose'
7
+ belongs_to :child, class_name: 'Tube'
8
8
  end
@@ -4,7 +4,7 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
4
4
  module TubeCreation
5
5
  def create!(attributes = nil)
6
6
  attributes ||= {}
7
- attributes[:wells].delete_if { |_,v| v.blank? } if attributes.key?(:wells)
7
+ attributes[:wells].delete_if { |_, v| v.blank? } if attributes.key?(:wells)
8
8
 
9
9
  new({}, false).tap do |plate|
10
10
  api.create(actions.create, { 'plate' => attributes }, Sequencescape::Api::ModifyingHandler.new(plate))
@@ -12,8 +12,8 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
12
12
  end
13
13
  end
14
14
 
15
- has_many :children, :class_name => 'TubePurpose'
16
- has_many :parents, :class_name => 'TubePurpose'
15
+ has_many :children, class_name: 'TubePurpose'
16
+ has_many :parents, class_name: 'TubePurpose'
17
17
 
18
18
  has_many :tubes do
19
19
  include Sequencescape::TubePurpose::TubeCreation
@@ -5,8 +5,8 @@ class Sequencescape::User < ::Sequencescape::Api::Resource
5
5
  attribute_accessor :last_name
6
6
  attribute_accessor :barcode
7
7
 
8
- #TODO make swipecard_code readonly. Can't at the moment because of a bug
9
- #attribute_writer :swipecard_code
8
+ # TODO: make swipecard_code readonly. Can't at the moment because of a bug
9
+ # attribute_writer :swipecard_code
10
10
  attribute_accessor :swipecard_code
11
11
 
12
12
  attribute_reader :has_a_swipecard_code
@@ -1,6 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::VolumeUpdate < ::Sequencescape::Api::Resource
4
- belongs_to :target, :class_name => 'Asset', :disposition => :inline
4
+ belongs_to :target, class_name: 'Asset', disposition: :inline
5
5
  attribute_accessor :volume_change, :created_by
6
6
  end
@@ -3,7 +3,6 @@ require 'sequencescape/behaviour/receptacle'
3
3
  require 'sequencescape/behaviour/state_driven'
4
4
 
5
5
  class Sequencescape::Well < ::Sequencescape::Asset
6
-
7
6
  include Sequencescape::Behaviour::Receptacle
8
7
  include Sequencescape::Behaviour::StateDriven
9
8
 
@@ -15,5 +14,4 @@ class Sequencescape::Well < ::Sequencescape::Asset
15
14
  def pool_id
16
15
  pool.nil? ? nil : pool['id']
17
16
  end
18
-
19
17
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::WorkCompletion < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :target, :class_name => 'Asset'
5
+ belongs_to :target, class_name: 'Asset'
6
6
 
7
7
  # This should really be a has_many, but we'll need
8
8
  # to get assignment from arrays of strings working first.