Class: Inferno::Entities::Test

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
DSL
Defined in:
lib/inferno/entities/test.rb

Constant Summary

Constants included from DSL

DSL::EXTENDABLE_DSL_MODULES, DSL::INCLUDABLE_DSL_MODULES

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



111
112
113
114
115
116
117
118
# File 'lib/inferno/entities/test.rb', line 111

def method_missing(name, *args, &)
  parent_instance = self.class.parent&.new
  if parent_instance.respond_to?(name)
    parent_instance.send(name, *args, &)
  else
    super
  end
end

Instance Attribute Details

#result_messageObject

Returns the value of attribute result_message.



15
16
17
# File 'lib/inferno/entities/test.rb', line 15

def result_message
  @result_message
end

#scratchObject (readonly)

Returns the value of attribute scratch.



16
17
18
# File 'lib/inferno/entities/test.rb', line 16

def scratch
  @scratch
end

#suite_optionsObject (readonly)

Returns the value of attribute suite_options.



16
17
18
# File 'lib/inferno/entities/test.rb', line 16

def suite_options
  @suite_options
end

#test_session_idObject (readonly)

Returns the value of attribute test_session_id.



16
17
18
# File 'lib/inferno/entities/test.rb', line 16

def test_session_id
  @test_session_id
end

Class Method Details

.block(&block) ⇒ Proc Also known as: run

Set/Get the block that is executed when a Test is run

Parameters:

  • block (Proc)

Returns:

  • (Proc)

    the block that is executed when a Test is run



174
175
176
177
178
# File 'lib/inferno/entities/test.rb', line 174

def block(&block)
  return @block unless block_given?

  @block = block
end

.input(name, *other_names, **input_params) ⇒ void

This method returns an undefined value.

Define inputs for this Test

Examples:

input :patientid, title: 'Patient ID', description: 'The ID of the patient being searched for'
input :textarea, title: 'Textarea Input Example', type: 'textarea'

Parameters:

  • name (Symbol)

    name of the input

  • other_names (Symbol)

    array of symbols if specifying multiple inputs

  • input_params (Hash)

    options for input such as type, description, or title

Options Hash (**input_params):

  • :title (String)

    Human readable title for input

  • :description (String)

    Description for the input

  • :type (String)
    ‘text’ ‘textarea’


139
140
141
142
143
144
145
146
147
# File 'lib/inferno/entities/test.rb', line 139

def input(name, *other_names, **input_params)
  super

  if other_names.present?
    [name, *other_names].each { |input| attr_reader input }
  else
    attr_reader name
  end
end

.output(*output_definitions, **_output_params) ⇒ void

This method returns an undefined value.

Define outputs for this Test

Examples:

output :patient_id, :bearer_token

Parameters:

  • output_definitions (Symbol)
  • _output_params (Hash)

    Unused parameter. Just makes method signature compatible with Inferno::DSL::InputOutputHandling.output



157
158
159
160
161
162
163
# File 'lib/inferno/entities/test.rb', line 157

def output(*output_definitions, **_output_params)
  super

  output_definitions.each do |output|
    attr_accessor output
  end
end

.short_idObject



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

def short_id
  @short_id ||= begin
    prefix = parent.respond_to?(:short_id) ? "#{parent.short_id}." : ''
    suffix = parent ? (parent.tests.find_index(self) + 1).to_s.rjust(2, '0') : 'x'
    "#{prefix}#{suffix}"
  end
end

Instance Method Details

#add_message(type, message) ⇒ void

This method returns an undefined value.

Add a message to the result.

Parameters:

  • type (String)

    error, warning, or info

  • message (String)


36
37
38
# File 'lib/inferno/entities/test.rb', line 36

def add_message(type, message)
  messages << { type: type.to_s, message: format_markdown(message) }
end

#info(message = nil) ⇒ void

This method returns an undefined value.

Add an informational message to the results of a test. If passed a block, a failed assertion will become an info message and test execution will continue.

Examples:

# Add an info message
info 'This message will be added to the test results'

# The message for the failed assertion will be treated as an info
# message. Test exection will continue.
info { assert false == true }

Parameters:

  • message (String) (defaults to: nil)


75
76
77
78
79
80
81
82
83
84
# File 'lib/inferno/entities/test.rb', line 75

def info(message = nil)
  unless block_given?
    add_message('info', message) unless message.nil?
    return
  end

  yield
rescue Exceptions::AssertionException => e
  add_message('info', e.message)
end

#output(outputs) ⇒ void

This method returns an undefined value.

Set output values. Once set, these values will be available to any subsequent tests.

Examples:

output(patient_id: '5', bearer_token: 'ABC')

Parameters:

  • outputs (Hash)


47
48
49
50
51
52
# File 'lib/inferno/entities/test.rb', line 47

def output(outputs)
  outputs.each do |key, value|
    send("#{key}=", value)
    outputs_to_persist[key] = value
  end
end

#warning(message = nil) ⇒ void

This method returns an undefined value.

Add a warning message to the results of a test. If passed a block, a failed assertion will become a warning message and test execution will continue.

Examples:

# Add a warning message
warning 'This message will be added to the test results'

# The message for the failed assertion will be treated as a warning
# message. Test exection will continue.
warning { assert false == true }

Parameters:

  • message (String) (defaults to: nil)


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

def warning(message = nil)
  unless block_given?
    add_message('warning', message) unless message.nil?
    return
  end

  yield
rescue Exceptions::AssertionException => e
  add_message('warning', e.message)
end