Class: Inferno::Entities::Requirement

Inherits:
Entity
  • Object
show all
Defined in:
lib/inferno/entities/requirement.rb

Overview

A Requirement represents the specific rule or behavior a runnable is testing.

Constant Summary collapse

ATTRIBUTES =
[
  :id,
  :requirement_set,
  :url,
  :requirement,
  :conformance,
  :actor,
  :sub_requirements,
  :conditionality
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Entity

#to_hash

Constructor Details

#initialize(params) ⇒ Requirement

Returns a new instance of Requirement.



21
22
23
24
25
# File 'lib/inferno/entities/requirement.rb', line 21

def initialize(params)
  super(params, ATTRIBUTES)

  self.requirement_set = id.split('@').first if requirement_set.blank? && id&.include?('@')
end

Class Method Details

.expand_requirement_ids(requirement_id_string, default_set = nil) ⇒ Object

Expand a comma-delimited list of requirement id references into an Array of full requirement ids

expand_requirement_ids(‘example-ig@1,3,5-7’) # => [‘example-ig@1’,’example-ig@3’,’example-ig@5’,’example-ig@6’,’example-ig@7’] expand_requirement_ids(‘1,3,5-7’, ‘example-ig’) # => [‘example-ig@1’,’example-ig@3’,’example-ig@5’,’example-ig@6’,’example-ig@7’]

Parameters:

  • requirement_id_string (String)

    A comma-delimited list of requirement id references

  • default_set (String) (defaults to: nil)

    The requirement set identifier which will be used if none is included in the requirement_id_string



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/inferno/entities/requirement.rb', line 40

def self.expand_requirement_ids(requirement_id_string, default_set = nil)
  return [] if requirement_id_string.blank?

  current_set = default_set
  requirement_id_string
    .split(',')
    .map(&:strip)
    .flat_map do |requirement_string|
      current_set, requirement_string = requirement_string.split('@') if requirement_string.include?('@')

      requirement_ids =
        if requirement_string.include? '-'
          start_id, end_id = requirement_string.split('-')
          (start_id..end_id).to_a
        else
          [requirement_string]
        end

      requirement_ids.map { |id| "#{current_set}@#{id}" }
    end
end