inferno_core 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/inferno +7 -0
- data/lib/inferno/apps/cli/console.rb +12 -0
- data/lib/inferno/apps/cli/main.rb +18 -0
- data/lib/inferno/apps/cli/migration.rb +14 -0
- data/lib/inferno/apps/cli.rb +8 -0
- data/lib/inferno/config/application.rb +3 -0
- data/lib/inferno/config/boot/db.rb +1 -9
- data/lib/inferno/config/boot/logging.rb +2 -0
- data/lib/inferno/dsl/assertions.rb +66 -1
- data/lib/inferno/dsl/configurable.rb +1 -1
- data/lib/inferno/dsl/fhir_client.rb +4 -4
- data/lib/inferno/dsl/fhir_client_builder.rb +3 -3
- data/lib/inferno/dsl/fhir_validation.rb +1 -1
- data/lib/inferno/dsl/http_client.rb +4 -4
- data/lib/inferno/dsl/http_client_builder.rb +3 -3
- data/lib/inferno/dsl/request_storage.rb +8 -8
- data/lib/inferno/dsl/results.rb +1 -1
- data/lib/inferno/dsl/resume_test_route.rb +9 -9
- data/lib/inferno/dsl/runnable.rb +36 -18
- data/lib/inferno/entities/header.rb +14 -7
- data/lib/inferno/entities/message.rb +16 -8
- data/lib/inferno/entities/request.rb +32 -19
- data/lib/inferno/entities/result.rb +36 -29
- data/lib/inferno/entities/session_data.rb +12 -6
- data/lib/inferno/entities/test.rb +13 -0
- data/lib/inferno/entities/test_run.rb +29 -6
- data/lib/inferno/entities/test_session.rb +16 -10
- data/lib/inferno/public/bundle.js +1 -1
- data/lib/inferno/repositories/in_memory_repository.rb +1 -1
- data/lib/inferno/repositories/results.rb +1 -1
- data/lib/inferno/spec_support.rb +1 -1
- data/lib/inferno/test_runner.rb +1 -1
- data/lib/inferno/utils/markdown_formatter.rb +1 -1
- data/lib/inferno/utils/middleware/request_logger.rb +1 -1
- data/lib/inferno/utils/migration.rb +17 -0
- data/lib/inferno/version.rb +1 -1
- data/lib/inferno.rb +0 -4
- metadata +37 -4
- data/bin/inferno-console +0 -8
data/lib/inferno/dsl/runnable.rb
CHANGED
@@ -16,7 +16,7 @@ module Inferno
|
|
16
16
|
# - add the subclass to the relevant repository when it is created
|
17
17
|
# - copy the class instance variables from the superclass
|
18
18
|
# - add a hook to the subclass so that its subclasses do the same
|
19
|
-
# @
|
19
|
+
# @private
|
20
20
|
def self.extended(extending_class)
|
21
21
|
super
|
22
22
|
extending_class.extend Configurable
|
@@ -41,7 +41,7 @@ module Inferno
|
|
41
41
|
# classes. When inheriting from a Runnable class, these class instance
|
42
42
|
# variables need to be copied. Any child Runnable classes will themselves
|
43
43
|
# need to be subclassed so that their parent can be updated.
|
44
|
-
# @
|
44
|
+
# @private
|
45
45
|
def copy_instance_variables(subclass)
|
46
46
|
instance_variables.each do |variable|
|
47
47
|
next if [:@id, :@groups, :@tests, :@parent, :@children, :@test_count, :@config].include?(variable)
|
@@ -63,12 +63,13 @@ module Inferno
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
# @
|
66
|
+
# @private
|
67
67
|
def add_self_to_repository
|
68
68
|
repository.insert(self)
|
69
69
|
end
|
70
70
|
|
71
71
|
# An instance of the repository for the class using this module
|
72
|
+
# @private
|
72
73
|
def repository
|
73
74
|
nil
|
74
75
|
end
|
@@ -76,7 +77,7 @@ module Inferno
|
|
76
77
|
# This method defines a child entity. Classes using this module should
|
77
78
|
# alias the method name they wish to use to define child entities to this
|
78
79
|
# method.
|
79
|
-
# @
|
80
|
+
# @private
|
80
81
|
def define_child(*args, &block)
|
81
82
|
hash_args = process_args(args)
|
82
83
|
|
@@ -96,7 +97,7 @@ module Inferno
|
|
96
97
|
klass
|
97
98
|
end
|
98
99
|
|
99
|
-
# @
|
100
|
+
# @private
|
100
101
|
def process_args(args)
|
101
102
|
hash_args =
|
102
103
|
if args[0].is_a? Hash
|
@@ -112,13 +113,13 @@ module Inferno
|
|
112
113
|
hash_args
|
113
114
|
end
|
114
115
|
|
115
|
-
# @
|
116
|
+
# @private
|
116
117
|
def child_metadata(metadata = nil)
|
117
118
|
@child_metadata = metadata if metadata
|
118
119
|
@child_metadata
|
119
120
|
end
|
120
121
|
|
121
|
-
# @
|
122
|
+
# @private
|
122
123
|
def create_child_class(hash_args)
|
123
124
|
superclass_id = hash_args.delete :from
|
124
125
|
|
@@ -131,7 +132,7 @@ module Inferno
|
|
131
132
|
Class.new(superclass)
|
132
133
|
end
|
133
134
|
|
134
|
-
# @
|
135
|
+
# @private
|
135
136
|
def configure_child_class(klass, hash_args) # rubocop:disable Metrics/CyclomaticComplexity
|
136
137
|
inputs.each do |name|
|
137
138
|
next if klass.inputs.any? { |klass_input_name| klass_input_name == name }
|
@@ -177,11 +178,15 @@ module Inferno
|
|
177
178
|
end
|
178
179
|
end
|
179
180
|
|
180
|
-
# @
|
181
|
+
# @private
|
181
182
|
def handle_child_definition_block(klass, &block)
|
182
183
|
klass.class_eval(&block) if block_given?
|
183
184
|
end
|
184
185
|
|
186
|
+
# Set/Get a runnable's id
|
187
|
+
#
|
188
|
+
# @param new_id [String,Symbol]
|
189
|
+
# @return [String,Symbol] the id
|
185
190
|
def id(new_id = nil)
|
186
191
|
return @id if new_id.nil? && @id.present?
|
187
192
|
|
@@ -197,12 +202,20 @@ module Inferno
|
|
197
202
|
@id = "#{prefix}#{@base_id}"
|
198
203
|
end
|
199
204
|
|
205
|
+
# Set/Get a runnable's title
|
206
|
+
#
|
207
|
+
# @param new_title [String]
|
208
|
+
# @return [String] the title
|
200
209
|
def title(new_title = nil)
|
201
210
|
return @title if new_title.nil?
|
202
211
|
|
203
212
|
@title = new_title
|
204
213
|
end
|
205
214
|
|
215
|
+
# Set/Get a runnable's description
|
216
|
+
#
|
217
|
+
# @param new_description [String]
|
218
|
+
# @return [String] the description
|
206
219
|
def description(new_description = nil)
|
207
220
|
return @description if new_description.nil?
|
208
221
|
|
@@ -239,7 +252,7 @@ module Inferno
|
|
239
252
|
|
240
253
|
# Define outputs
|
241
254
|
#
|
242
|
-
# @param
|
255
|
+
# @param output_list [Symbol]
|
243
256
|
# @return [void]
|
244
257
|
# @example
|
245
258
|
# output :patient_id, :bearer_token
|
@@ -250,30 +263,32 @@ module Inferno
|
|
250
263
|
end
|
251
264
|
end
|
252
265
|
|
253
|
-
# @
|
266
|
+
# @private
|
254
267
|
def default_id
|
255
268
|
to_s
|
256
269
|
end
|
257
270
|
|
258
|
-
# @
|
271
|
+
# @private
|
259
272
|
def inputs
|
260
273
|
@inputs ||= []
|
261
274
|
end
|
262
275
|
|
276
|
+
# @private
|
263
277
|
def input_definitions
|
264
278
|
config.inputs.slice(*inputs)
|
265
279
|
end
|
266
280
|
|
281
|
+
# @private
|
267
282
|
def output_definitions
|
268
283
|
config.outputs.slice(*outputs)
|
269
284
|
end
|
270
285
|
|
271
|
-
# @
|
286
|
+
# @private
|
272
287
|
def outputs
|
273
288
|
@outputs ||= []
|
274
289
|
end
|
275
290
|
|
276
|
-
# @
|
291
|
+
# @private
|
277
292
|
def child_types
|
278
293
|
return [] if ancestors.include? Inferno::Entities::Test
|
279
294
|
return [:groups] if ancestors.include? Inferno::Entities::TestSuite
|
@@ -281,7 +296,7 @@ module Inferno
|
|
281
296
|
[:groups, :tests]
|
282
297
|
end
|
283
298
|
|
284
|
-
# @
|
299
|
+
# @private
|
285
300
|
def children
|
286
301
|
@children ||= []
|
287
302
|
end
|
@@ -292,7 +307,7 @@ module Inferno
|
|
292
307
|
@validator_url = url
|
293
308
|
end
|
294
309
|
|
295
|
-
# @
|
310
|
+
# @private
|
296
311
|
def suite
|
297
312
|
return self if ancestors.include? Inferno::Entities::TestSuite
|
298
313
|
|
@@ -329,8 +344,8 @@ module Inferno
|
|
329
344
|
# @yield This method takes a block which must return the identifier
|
330
345
|
# defined when a test was set to wait for the test run that hit this
|
331
346
|
# route. The block has access to the `request` method which returns a
|
332
|
-
# {Inferno::
|
333
|
-
# request.
|
347
|
+
# {Inferno::Entities::Request} object with the information for the
|
348
|
+
# incoming request.
|
334
349
|
def resume_test_route(method, path, &block)
|
335
350
|
route_class = Class.new(ResumeTestRoute) do
|
336
351
|
define_method(:test_run_identifier, &block)
|
@@ -357,10 +372,12 @@ module Inferno
|
|
357
372
|
Inferno.routes << { method: method, path: path, handler: handler, suite: suite }
|
358
373
|
end
|
359
374
|
|
375
|
+
# @private
|
360
376
|
def test_count
|
361
377
|
@test_count ||= children&.reduce(0) { |sum, child| sum + child.test_count } || 0
|
362
378
|
end
|
363
379
|
|
380
|
+
# @private
|
364
381
|
def required_inputs(prior_outputs = [])
|
365
382
|
required_inputs = inputs.select do |input|
|
366
383
|
!input_definitions[input][:optional] && !prior_outputs.include?(input)
|
@@ -371,6 +388,7 @@ module Inferno
|
|
371
388
|
(required_inputs + children_required_inputs).flatten.uniq
|
372
389
|
end
|
373
390
|
|
391
|
+
# @private
|
374
392
|
def missing_inputs(submitted_inputs)
|
375
393
|
submitted_inputs = [] if submitted_inputs.nil?
|
376
394
|
|
@@ -2,13 +2,20 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `Header` represents an HTTP request/response header
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the header
|
7
|
+
# @!attribute request_id
|
8
|
+
# @return [String] index of the HTTP request
|
9
|
+
# @!attribute name
|
10
|
+
# @return [String] header name
|
11
|
+
# @!attribute value
|
12
|
+
# @return [String] header value
|
13
|
+
# @!attribute type
|
14
|
+
# @return [String] request/response
|
15
|
+
# @!attribute created_at
|
16
|
+
# @return [Time]
|
17
|
+
# @!attribute updated_at
|
18
|
+
# @return [Time]
|
12
19
|
class Header < Entity
|
13
20
|
ATTRIBUTES = [:id, :request_id, :name, :type, :value, :created_at, :updated_at].freeze
|
14
21
|
|
@@ -2,14 +2,22 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `Message` represents a message generated during a test.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the message
|
7
|
+
# @!attribute index
|
8
|
+
# @return [String] index of the message. Used for ordering.
|
9
|
+
# @!attribute result_id
|
10
|
+
# @return [String]
|
11
|
+
# @!attribute result
|
12
|
+
# @return [Inferno::Entities::Result]
|
13
|
+
# @!attribute type
|
14
|
+
# @return [String]
|
15
|
+
# @!attribute message
|
16
|
+
# @return [String]
|
17
|
+
# @!attribute created_at
|
18
|
+
# @return [Time]
|
19
|
+
# @!attribute updated_at
|
20
|
+
# @return [Time]
|
13
21
|
class Message < Entity
|
14
22
|
ATTRIBUTES = [:id, :index, :message, :result_id, :result, :type, :created_at, :updated_at].freeze
|
15
23
|
TYPES = ['error', 'warning', 'info'].freeze
|
@@ -2,21 +2,34 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `Request` represents a request and response issued during a test.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the request
|
7
|
+
# @!attribute index
|
8
|
+
# @return [String] index of the request. Used for ordering.
|
9
|
+
# @!attribute verb
|
10
|
+
# @return [String] http verb
|
11
|
+
# @!attribute url
|
12
|
+
# @return [String] request url
|
13
|
+
# @!attribute direction
|
14
|
+
# @return [String] incoming/outgoing
|
15
|
+
# @!attribute name
|
16
|
+
# @return [String] name for the request
|
17
|
+
# @!attribute status
|
18
|
+
# @return [String] http response status code
|
19
|
+
# @!attribute request_body
|
20
|
+
# @return [String] body of the http request
|
21
|
+
# @!attribute response_body
|
22
|
+
# @return [String] body of the http response
|
23
|
+
# @!attribute headers
|
24
|
+
# @return [Array<Inferno::Entities::Header>] http request/response headers
|
25
|
+
# @!attribute result_id
|
26
|
+
# @return [String] id of the result for this request
|
27
|
+
# @!attribute test_session_id
|
28
|
+
# @return [String] id of the test session for this request
|
29
|
+
# @!attribute created_at
|
30
|
+
# @return [Time] creation timestamp
|
31
|
+
# @!attribute updated_at
|
32
|
+
# @return [Time] update timestamp
|
20
33
|
class Request < Entity
|
21
34
|
ATTRIBUTES = [
|
22
35
|
:id, :index, :verb, :url, :direction, :name, :status,
|
@@ -94,7 +107,7 @@ module Inferno
|
|
94
107
|
}
|
95
108
|
end
|
96
109
|
|
97
|
-
# @
|
110
|
+
# @private
|
98
111
|
def to_hash
|
99
112
|
{
|
100
113
|
id: id,
|
@@ -122,7 +135,7 @@ module Inferno
|
|
122
135
|
end
|
123
136
|
|
124
137
|
class << self
|
125
|
-
# @
|
138
|
+
# @private
|
126
139
|
def from_rack_env(env, name: nil)
|
127
140
|
rack_request = env['router.request'].rack_request
|
128
141
|
url = "#{rack_request.base_url}#{rack_request.path}"
|
@@ -143,7 +156,7 @@ module Inferno
|
|
143
156
|
)
|
144
157
|
end
|
145
158
|
|
146
|
-
# @
|
159
|
+
# @private
|
147
160
|
def from_http_response(response, test_session_id:, direction: 'outgoing', name: nil)
|
148
161
|
request_headers =
|
149
162
|
response.env.request_headers
|
@@ -165,7 +178,7 @@ module Inferno
|
|
165
178
|
)
|
166
179
|
end
|
167
180
|
|
168
|
-
# @
|
181
|
+
# @private
|
169
182
|
def from_fhir_client_reply(reply, test_session_id:, direction: 'outgoing', name: nil)
|
170
183
|
request = reply.request
|
171
184
|
response = reply.response
|
@@ -3,36 +3,43 @@ module Inferno
|
|
3
3
|
# A `Result` represents the result of running a `Test`, `TestGroup`,
|
4
4
|
# or `TestSuite`
|
5
5
|
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# result belongs to
|
16
|
-
#
|
17
|
-
# belongs to
|
18
|
-
#
|
19
|
-
# result belongs to
|
20
|
-
#
|
21
|
-
# belongs to
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
6
|
+
# @!attribute id
|
7
|
+
# @return [String] id of the session
|
8
|
+
# @!attribute created_at
|
9
|
+
# @return [Time] creation timestamp
|
10
|
+
# @!attribute updated_at
|
11
|
+
# @return [Time] update timestamp
|
12
|
+
# @!attribute test_id
|
13
|
+
# @return [String, nil] id of the `Test` this result belongs to
|
14
|
+
# @!attribute test
|
15
|
+
# @return [Test, nil] the `Test` this result belongs to
|
16
|
+
# @!attribute test_group_id
|
17
|
+
# @return [String, nil] id of the `TestGroup` this result belongs to
|
18
|
+
# @!attribute test_group
|
19
|
+
# @return [TestGroup, nil] the `TestGroup` this result belongs to
|
20
|
+
# @!attribute test_suite_id
|
21
|
+
# @return [String, nil] id of the `TestSuite` this result belongs to
|
22
|
+
# @!attribute test_suite
|
23
|
+
# @return [TestSuite, nil] the `TestSuite` this result belongs to
|
24
|
+
# @!attribute result
|
25
|
+
# @return [String] the result (`pass`, `fail`, `skip`, `omit`, `error`,
|
26
|
+
# `running`, `wait`, `cancel`)
|
27
|
+
# @!attribute result_message
|
28
|
+
# @return [String] summary message for this result
|
29
|
+
# @!attribute test_run_id
|
30
|
+
# @return [String] the `TestRun` this result belongs to
|
31
|
+
# @!attribute test_session_id
|
32
|
+
# @return [String] the `TestSession` this result belongs to
|
33
|
+
# @!attribute messages
|
34
|
+
# @return [Array<Inferno::Entities::Message>] additional messages for this
|
33
35
|
# result
|
34
|
-
#
|
35
|
-
#
|
36
|
+
# @!attribute requests
|
37
|
+
# @return [Array<Inferno::Entities::Request>] summaries of the requests
|
38
|
+
# associated with this result
|
39
|
+
# @!attribute input_json
|
40
|
+
# @return [String] JSON string of the inputs used for this result
|
41
|
+
# @!attribute output_json
|
42
|
+
# @return [String] JSON string of the outputs created by this result
|
36
43
|
class Result < Entity
|
37
44
|
ATTRIBUTES = [
|
38
45
|
:id, :created_at, :updated_at, :test_id, :test, :test_group_id,
|
@@ -3,12 +3,18 @@ module Inferno
|
|
3
3
|
# `SessionData` represents a piece of saved state for a `TestSession`.
|
4
4
|
# These are used to store test inputs and outputs.
|
5
5
|
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
6
|
+
# @!attribute id
|
7
|
+
# @return [String] id of the test input
|
8
|
+
# @!attribute name
|
9
|
+
# @return [String]
|
10
|
+
# @!attribute value
|
11
|
+
# @return [String]
|
12
|
+
# @!attribute test_session_id
|
13
|
+
# @return [String]
|
14
|
+
# @!attribute created_at
|
15
|
+
# @return [Time]
|
16
|
+
# @!attribute updated_at
|
17
|
+
# @return [Time]
|
12
18
|
class SessionData < Entity
|
13
19
|
ATTRIBUTES = [:id, :name, :value, :test_session_id, :created_at, :updated_at].freeze
|
14
20
|
|
@@ -15,12 +15,14 @@ module Inferno
|
|
15
15
|
attr_accessor :result_message
|
16
16
|
attr_reader :test_session_id, :scratch
|
17
17
|
|
18
|
+
# @private
|
18
19
|
def initialize(**params)
|
19
20
|
params[:inputs]&.each { |key, value| instance_variable_set("@#{key}", value) }
|
20
21
|
@scratch = params[:scratch]
|
21
22
|
@test_session_id = params[:test_session_id]
|
22
23
|
end
|
23
24
|
|
25
|
+
# @private
|
24
26
|
def messages
|
25
27
|
@messages ||= []
|
26
28
|
end
|
@@ -100,6 +102,7 @@ module Inferno
|
|
100
102
|
add_message('warning', e.message)
|
101
103
|
end
|
102
104
|
|
105
|
+
# @private
|
103
106
|
def method_missing(name, *args, &block)
|
104
107
|
parent_instance = self.class.parent&.new
|
105
108
|
if parent_instance.respond_to?(name)
|
@@ -109,6 +112,7 @@ module Inferno
|
|
109
112
|
end
|
110
113
|
end
|
111
114
|
|
115
|
+
# @private
|
112
116
|
def respond_to_missing?(name, _include_private = false)
|
113
117
|
self.class.parent&.new&.respond_to?(name)
|
114
118
|
end
|
@@ -155,6 +159,10 @@ module Inferno
|
|
155
159
|
Inferno::Repositories::Tests.new
|
156
160
|
end
|
157
161
|
|
162
|
+
# Set/Get the block that is executed when a Test is run
|
163
|
+
#
|
164
|
+
# @param block [Proc]
|
165
|
+
# @return [Proc] the block that is executed when a Test is run
|
158
166
|
def block(&block)
|
159
167
|
return @block unless block_given?
|
160
168
|
|
@@ -163,6 +171,7 @@ module Inferno
|
|
163
171
|
|
164
172
|
alias run block
|
165
173
|
|
174
|
+
# @private
|
166
175
|
def default_id
|
167
176
|
return name if name.present?
|
168
177
|
|
@@ -170,16 +179,19 @@ module Inferno
|
|
170
179
|
"Test#{suffix}"
|
171
180
|
end
|
172
181
|
|
182
|
+
# @private
|
173
183
|
def reference_hash
|
174
184
|
{
|
175
185
|
test_id: id
|
176
186
|
}
|
177
187
|
end
|
178
188
|
|
189
|
+
# @private
|
179
190
|
def test_count
|
180
191
|
1
|
181
192
|
end
|
182
193
|
|
194
|
+
# @private
|
183
195
|
def method_missing(name, *args, &block)
|
184
196
|
parent_instance = parent&.new
|
185
197
|
if parent_instance.respond_to?(name)
|
@@ -189,6 +201,7 @@ module Inferno
|
|
189
201
|
end
|
190
202
|
end
|
191
203
|
|
204
|
+
# @private
|
192
205
|
def respond_to_missing?(name, _include_private = false)
|
193
206
|
parent&.new&.respond_to?(name)
|
194
207
|
end
|
@@ -2,12 +2,35 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `TestRun` represents a request to execute an executable set of tests.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the test run
|
7
|
+
# @!attribute created_at
|
8
|
+
# @return [Time] creation timestamp
|
9
|
+
# @!attribute updated_at
|
10
|
+
# @return [Time] update timestamp
|
11
|
+
# @!attribute test_session_id
|
12
|
+
# @return [String]
|
13
|
+
# @!attribute status
|
14
|
+
# @return [String]
|
15
|
+
# @!attribute test_id
|
16
|
+
# @return [String, nil] id of the `Test` this result belongs to
|
17
|
+
# @!attribute test
|
18
|
+
# @return [Test, nil] the `Test` this result belongs to
|
19
|
+
# @!attribute test_group_id
|
20
|
+
# @return [String, nil] id of the `TestGroup` this result belongs to
|
21
|
+
# @!attribute test_group
|
22
|
+
# @return [TestGroup, nil] the `TestGroup` this result belongs to
|
23
|
+
# @!attribute test_suite_id
|
24
|
+
# @return [String, nil] id of the `TestSuite` this result belongs to
|
25
|
+
# @!attribute test_suite
|
26
|
+
# @return [TestSuite, nil] the `TestSuite` this result belongs to
|
27
|
+
# @!attribute inputs
|
28
|
+
# @return [Array<Hash>]
|
29
|
+
# @!attribute results
|
30
|
+
# @return [Array<Inferno::Entities::Result>]
|
31
|
+
# @!attribute identifier
|
32
|
+
# @return [String, nil] identfier for a waiting `TestRun`
|
33
|
+
# @!attribute wait_timeout
|
11
34
|
class TestRun < Entity
|
12
35
|
STATUS_OPTIONS = ['queued', 'running', 'waiting', 'done'].freeze
|
13
36
|
ATTRIBUTES = [
|
@@ -2,17 +2,23 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `TestSession` represents an individual testing session.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the session
|
7
|
+
# @!attribute created_at
|
8
|
+
# @return [Time] creation timestamp
|
9
|
+
# @!attribute updated_at
|
10
|
+
# @return [Time] update timestamp
|
11
|
+
# @!attribute test_suite_id
|
12
|
+
# @return [String] id of the `TestSuite` being run in this session
|
13
|
+
# @!attribute test_suite
|
14
|
+
# @return [Inferno::Entities::TestSuite] the `TestSuite` being run in this
|
15
|
+
# session
|
16
|
+
# @!attribute test_runs
|
17
|
+
# @return [Array<Inferno::Entities::TestRun>] the `TestRuns` associated
|
18
|
+
# with this session
|
19
|
+
# @!attribute results
|
20
|
+
# @return [Array<Inferno::Entities::TestResult>] the `TestResults`
|
13
21
|
# associated with this session
|
14
|
-
# @attr_accessor [Array<Inferno::Entities::TestResult>] results the
|
15
|
-
# `TestResults` associated with this session
|
16
22
|
class TestSession < Entity
|
17
23
|
ATTRIBUTES = [:id, :created_at, :updated_at, :test_suite_id, :test_suite, :test_runs, :results].freeze
|
18
24
|
|