inferno_core 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|