inferno_core 0.4.3 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,6 +13,7 @@ module Inferno
13
13
 
14
14
  def_delegators 'self.class', :title, :id, :groups, :inputs, :outputs, :tests
15
15
 
16
+ # @private
16
17
  def method_missing(name, *args, &)
17
18
  parent_instance = self.class.parent&.new
18
19
  if parent_instance.respond_to?(name)
@@ -22,6 +23,7 @@ module Inferno
22
23
  end
23
24
  end
24
25
 
26
+ # @private
25
27
  def respond_to_missing?(name, _include_private = false)
26
28
  self.class.parent&.new&.respond_to?(name)
27
29
  end
@@ -31,26 +33,39 @@ module Inferno
31
33
  Inferno::Repositories::TestGroups.new
32
34
  end
33
35
 
36
+ # Get this group's child groups, filtered by suite options, if provided.
37
+ #
38
+ # @param options [Array<Inferno::DSL::SuiteOption>]
39
+ #
40
+ # @return [Array<Inferno::Entities::TestGroup>]
34
41
  def groups(options = nil)
35
42
  children(options).select { |child| child < Inferno::Entities::TestGroup }
36
43
  end
37
44
 
45
+ # Get this group's child tests, filtered by suite options, if provided.
46
+ #
47
+ # @param options [Array<Inferno::DSL::SuiteOption>]
48
+ #
49
+ # @return [Array<Inferno::Entities::Test>]
38
50
  def tests(options = nil)
39
51
  children(options).select { |child| child < Inferno::Entities::Test }
40
52
  end
41
53
 
42
54
  # Methods to configure Inferno::DSL::Runnable
43
55
 
56
+ # Add a child group
44
57
  def group(...)
45
58
  child_metadata(group_metadata)
46
59
  define_child(...)
47
60
  end
48
61
 
62
+ # Add a test
49
63
  def test(...)
50
64
  child_metadata(test_metadata)
51
65
  define_child(...)
52
66
  end
53
67
 
68
+ # @private
54
69
  def group_metadata
55
70
  {
56
71
  class: TestGroup,
@@ -58,6 +73,7 @@ module Inferno
58
73
  }
59
74
  end
60
75
 
76
+ # @private
61
77
  def test_metadata
62
78
  {
63
79
  class: Test,
@@ -65,6 +81,7 @@ module Inferno
65
81
  }
66
82
  end
67
83
 
84
+ # @return [String] A short numeric id which is displayed in the UI
68
85
  def short_id
69
86
  @short_id ||= begin
70
87
  prefix = parent.respond_to?(:short_id) ? "#{parent.short_id}." : ''
@@ -73,6 +90,7 @@ module Inferno
73
90
  end
74
91
  end
75
92
 
93
+ # @private
76
94
  def default_id
77
95
  return name if name.present?
78
96
 
@@ -80,16 +98,22 @@ module Inferno
80
98
  "Group#{suffix}"
81
99
  end
82
100
 
101
+ # @private
83
102
  def reference_hash
84
103
  {
85
104
  test_group_id: id
86
105
  }
87
106
  end
88
107
 
108
+ # When true, this group's children can not be run individually in the
109
+ # UI, and this group must be run as a group.
110
+ #
111
+ # @param value [Boolean]
89
112
  def run_as_group(value = true) # rubocop:disable Style/OptionalBooleanParameter
90
113
  @run_as_group = value
91
114
  end
92
115
 
116
+ # @return [Boolean]
93
117
  def run_as_group?
94
118
  @run_as_group || false
95
119
  end
@@ -19,6 +19,7 @@ module Inferno
19
19
 
20
20
  def_delegator :default_group, :test
21
21
 
22
+ # @private
22
23
  def default_group
23
24
  return @default_group if @default_group
24
25
 
@@ -31,17 +32,24 @@ module Inferno
31
32
  Inferno::Repositories::TestSuites.new
32
33
  end
33
34
 
35
+ # Get this suite's child groups, filtered by suite options, if provided.
36
+ #
37
+ # @param options [Array<Inferno::DSL::SuiteOption>]
38
+ #
39
+ # @return [Array<Inferno::Entities::TestGroup>]
34
40
  def groups(options = nil)
35
41
  children(options).select { |child| child < Inferno::Entities::TestGroup }
36
42
  end
37
43
 
38
44
  # Methods to configure Inferno::DSL::Runnable
39
45
 
46
+ # Add a child group
40
47
  def group(...)
41
48
  child_metadata(group_metadata)
42
49
  define_child(...)
43
50
  end
44
51
 
52
+ # @private
45
53
  def group_metadata
46
54
  {
47
55
  class: TestGroup,
@@ -49,18 +57,25 @@ module Inferno
49
57
  }
50
58
  end
51
59
 
60
+ # @private
52
61
  def reference_hash
53
62
  {
54
63
  test_suite_id: id
55
64
  }
56
65
  end
57
66
 
67
+ # Set/get the version of this test suite.
68
+ #
69
+ # @param version [String]
70
+ #
71
+ # @return [String, nil]
58
72
  def version(version = nil)
59
73
  return @version if version.nil?
60
74
 
61
75
  @version = version
62
76
  end
63
77
 
78
+ # @private
64
79
  def configuration_messages(new_messages = nil, force_recheck: false)
65
80
  return @configuration_messages = new_messages unless new_messages.nil?
66
81
 
@@ -82,24 +97,83 @@ module Inferno
82
97
  @check_configuration_block = block
83
98
  end
84
99
 
100
+ # @private
85
101
  def presets
86
102
  @presets ||= Repositories::Presets.new.presets_for_suite(id)
87
103
  end
88
104
 
89
- def suite_option(identifier, **input_params)
90
- suite_options << DSL::SuiteOption.new(input_params.merge(id: identifier))
105
+ # Define an option for this suite. Options are used to define suite-wide
106
+ # configuration which is selected by a user at the start of a test
107
+ # session. These options can be used to change what tests/groups are run
108
+ # or behavior within particular tests.
109
+ #
110
+ # @param identifier [Symbol, String] The identifier which will be used
111
+ # to refer to this option
112
+ # @option option_params [String] :title Title which will be displayed in
113
+ # the UI
114
+ # @option option_params [Array<Hash>] :list_options The list of possible
115
+ # values for this option. Each hash needs to have a `label:` and a
116
+ # `value:` entry which are Strings.
117
+ #
118
+ # @example
119
+ # suite_option :ig_version,
120
+ # list_options: [
121
+ # {
122
+ # label: 'IG v1',
123
+ # value: 'ig_v1'
124
+ # },
125
+ # {
126
+ # label: 'IG v2',
127
+ # value: 'ig_v2'
128
+ # }
129
+ # ]
130
+ #
131
+ # group from: :ig_v1_group,
132
+ # required_suite_options: { ig_version: 'ig_v1' }
133
+ #
134
+ # group from: :ig_v2_group do
135
+ # required_suite_options ig_version: 'ig_v2'
136
+ # end
137
+ def suite_option(identifier, **option_params)
138
+ suite_options << DSL::SuiteOption.new(option_params.merge(id: identifier))
91
139
  end
92
140
 
141
+ # @return [Array<Inferno::DSL::SuiteOption>] The options defined for
142
+ # this suite
93
143
  def suite_options
94
144
  @suite_options ||= []
95
145
  end
96
146
 
147
+ # Set/get a list of links which are displayed in the footer of the UI.
148
+ #
149
+ # @param links [Array<Hash>] A list of Hashes for the links to be
150
+ # displayed. Each hash needs a `label:` and `url:` entry.
151
+ #
152
+ # @return [Array<Hash>, nil]
153
+ #
154
+ # @example
155
+ # links [
156
+ # {
157
+ # label: 'Report Issue',
158
+ # url: 'https://github.com/onc-healthit/onc-certification-g10-test-kit/issues/'
159
+ # },
160
+ # {
161
+ # label: 'Open Source',
162
+ # url: 'https://github.com/onc-healthit/onc-certification-g10-test-kit/'
163
+ # }
164
+ # ]
97
165
  def links(links = nil)
98
166
  return @links if links.nil?
99
167
 
100
168
  @links = links
101
169
  end
102
170
 
171
+ # Set/get a description which for this test suite which will be
172
+ # displayed in the UI.
173
+ #
174
+ # @param suite_summary [String]
175
+ #
176
+ # @return [String, nil]
103
177
  def suite_summary(suite_summary = nil)
104
178
  return @suite_summary if suite_summary.nil?
105
179