sanger/sequencescape

View on GitHub
app/sample_manifest_excel/sample_manifest_excel/tags/aliquot_updater.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module SampleManifestExcel
  module Tags
    ##
    # AliquotUpdater
    # TODO: Add specific tests
    module AliquotUpdater
      extend ActiveSupport::Concern

      ##
      # ClassMethods
      module ClassMethods
        def set_tag_name(name) # rubocop:disable Naming/AccessorMethodName
          define_method :tag_name do
            name
          end
        end
      end

      def update(attributes = {})
        return unless valid?

        tag =
          if value.present?
            attributes[:tag_group]
              .tags
              .find_or_create_by(oligo: value) { |t| t.map_id = attributes[:tag_group].tags.count + 1 }
          end
        aliquots.each { |aliquot| aliquot.assign_attributes(tag_name => tag) }
      end
    end
  end
end