Class: Inferno::Entities::TestSuite

Inherits:
Object
  • Object
show all
Extended by:
Forwardable, DSL::FHIRClient::ClassMethods, DSL::HTTPClient::ClassMethods, DSL::Links, DSL::Runnable
Includes:
DSL::Assertions, DSL::FHIRResourceValidation, DSL::FHIRValidation, DSL::FhirpathEvaluation, DSL::Messages, DSL::Results
Defined in:
lib/inferno/entities/test_suite.rb

Overview

A ‘TestSuite` represents a packaged group of tests, usually for a single Implementation Guide

Constant Summary

Constants included from DSL::Runnable

DSL::Runnable::VARIABLES_NOT_TO_COPY

Constants included from DSL::Links

DSL::Links::DEFAULT_TYPES

Instance Attribute Summary collapse

Attributes included from DSL::Runnable

#parent, #suite_option_requirements

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DSL::Runnable

add_self_to_repository, all_children, block, child_metadata, children, configure_child_class, copy_instance_variables, create_child_class, default_id, define_child, description, extended, handle_child_definition_block, id, input_instructions, inspect, optional, optional?, process_args, repository, required, required?, required_suite_options, resume_test_route, route, short_description, short_title, suite, suite_endpoint, test_count, title, user_runnable?

Methods included from Utils::MarkdownFormatter

#format_markdown

Methods included from DSL::Links

add_link, add_predefined_link, download_url, ig_url, links, report_issue_url, source_code_url

Methods included from DSL::FHIRClient::ClassMethods

fhir_client, fhir_client_definitions

Methods included from DSL::HTTPClient::ClassMethods

http_client, http_client_definitions

Methods included from DSL::Messages

#add_message, #info, #messages, #warning

Methods included from DSL::Assertions

#assert, #assert_resource_type, #assert_response_content_type, #assert_response_status, #assert_valid_bundle_entries, #assert_valid_http_uri, #assert_valid_json, #assert_valid_resource, #bad_content_type_message, #bad_resource_type_message, #bad_response_status_message, #invalid_bundle_entries_message, #invalid_resource_message, #no_content_type_message, #normalize_resource_type, #normalize_types_to_check

Methods included from DSL::Results

#cancel, #identifier, #omit, #omit_if, #pass, #pass_if, #skip, #skip_if, #wait, #wait_timeout

Methods included from DSL::FhirpathEvaluation

#evaluate_fhirpath, included

Methods included from DSL::FHIRResourceValidation

included

Methods included from DSL::FHIRValidation

#find_validator, included, #resource_is_valid?

Constructor Details

#initializeTestSuite

Returns a new instance of TestSuite.



31
32
33
# File 'lib/inferno/entities/test_suite.rb', line 31

def initialize
  @results = Inferno::ResultCollection.new
end

Instance Attribute Details

#result_messageObject

Returns the value of attribute result_message.



28
29
30
# File 'lib/inferno/entities/test_suite.rb', line 28

def result_message
  @result_message
end

#resultsObject

Returns the value of attribute results.



28
29
30
# File 'lib/inferno/entities/test_suite.rb', line 28

def results
  @results
end

Class Method Details

.check_configuration(&block) ⇒ void

This method returns an undefined value.

Provide a block which will verify any configuration needed for this test suite to operate properly.

Yield Returns:

  • (Array<Hash>)

    An array of message hashes containing the keys ‘:type` and `:message`. Type options are `info`, `warning`, and `error`.



117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/inferno/entities/test_suite.rb', line 117

def check_configuration(&block)
  @check_configuration_block = lambda do
    block.call&.each do |configuration_message|
      case configuration_message[:type]
      when 'warning'
        Application[:logger].warn(configuration_message[:message])
      when 'error'
        Application[:logger].error(configuration_message[:message])
      end
    end
  end
end

.configuration_messages(new_messages = nil, force_recheck: false) ⇒ Object



99
100
101
102
103
104
105
106
107
108
# File 'lib/inferno/entities/test_suite.rb', line 99

def configuration_messages(new_messages = nil, force_recheck: false)
  return @configuration_messages = new_messages unless new_messages.nil?

  @configuration_messages =
    if force_recheck
      @check_configuration_block ? @check_configuration_block.call : []
    else
      @configuration_messages || (@check_configuration_block ? @check_configuration_block.call : [])
    end
end

.default_groupObject



41
42
43
44
45
46
47
# File 'lib/inferno/entities/test_suite.rb', line 41

def default_group
  return @default_group if @default_group

  @default_group = Class.new(TestGroup)
  all_children << @default_group
  @default_group
end

.groupvoid

This method returns an undefined value.

Add a child group



67
68
69
70
# File 'lib/inferno/entities/test_suite.rb', line 67

def group(...)
  ()
  define_child(...)
end

.group_metadataObject



73
74
75
76
77
78
# File 'lib/inferno/entities/test_suite.rb', line 73

def 
  {
    class: TestGroup,
    repo: Inferno::Repositories::TestGroups.new
  }
end

.groups(options = nil) ⇒ Array<Inferno::Entities::TestGroup>

Get this suite’s child groups, filtered by suite options, if provided.

Parameters:

Returns:



59
60
61
# File 'lib/inferno/entities/test_suite.rb', line 59

def groups(options = nil)
  children(options).select { |child| child < Inferno::Entities::TestGroup }
end

.presetsObject



131
132
133
# File 'lib/inferno/entities/test_suite.rb', line 131

def presets
  @presets ||= Repositories::Presets.new.presets_for_suite(id)
end

.reference_hashObject



81
82
83
84
85
# File 'lib/inferno/entities/test_suite.rb', line 81

def reference_hash
  {
    test_suite_id: id
  }
end

.repositoryObject



50
51
52
# File 'lib/inferno/entities/test_suite.rb', line 50

def repository
  Inferno::Repositories::TestSuites.new
end

.suite_option(identifier, **option_params) ⇒ void

This method returns an undefined value.

Define an option for this suite. Options are used to define suite-wide configuration which is selected by a user at the start of a test session. These options can be used to change what tests/groups are run or behavior within particular tests.

Examples:

suite_option :ig_version,
            list_options: [
              {
                label: 'IG v1',
                value: 'ig_v1'
              },
              {
                label: 'IG v2',
                value: 'ig_v2'
              }
            ]

group from: :ig_v1_group,
      required_suite_options: { ig_version: 'ig_v1' }

group from: :ig_v2_group do
  required_suite_options ig_version: 'ig_v2'
end

Parameters:

  • identifier (Symbol, String)

    The identifier which will be used to refer to this option

  • option_params (Hash)

    a customizable set of options

Options Hash (**option_params):

  • :title (String)

    Title which will be displayed in the UI

  • :list_options (Array<Hash>)

    The list of possible values for this option. Each hash needs to have a ‘label:` and a `value:` entry which are Strings.



168
169
170
# File 'lib/inferno/entities/test_suite.rb', line 168

def suite_option(identifier, **option_params)
  suite_options << DSL::SuiteOption.new(option_params.merge(id: identifier))
end

.suite_optionsArray<Inferno::DSL::SuiteOption>

Returns The options defined for this suite.

Returns:



174
175
176
# File 'lib/inferno/entities/test_suite.rb', line 174

def suite_options
  @suite_options ||= []
end

.suite_summary(suite_summary = nil) ⇒ String?

Set/get a description which for this test suite which will be displayed in the UI.

Parameters:

  • suite_summary (String) (defaults to: nil)

Returns:

  • (String, nil)


184
185
186
187
188
# File 'lib/inferno/entities/test_suite.rb', line 184

def suite_summary(suite_summary = nil)
  return @suite_summary if suite_summary.nil?

  @suite_summary = format_markdown(suite_summary)
end

.version(version = nil) ⇒ String?

Set/get the version of this test suite.

Parameters:

  • version (String) (defaults to: nil)

Returns:

  • (String, nil)


92
93
94
95
96
# File 'lib/inferno/entities/test_suite.rb', line 92

def version(version = nil)
  return @version if version.nil?

  @version = version
end