Module: OpenapiFirst::Test::Coverage
- Defined in:
- lib/openapi_first/test/coverage.rb,
lib/openapi_first/test/coverage/plan.rb,
lib/openapi_first/test/coverage/route_task.rb,
lib/openapi_first/test/coverage/request_task.rb,
lib/openapi_first/test/coverage/response_task.rb,
lib/openapi_first/test/coverage/terminal_formatter.rb
Overview
The Coverage module is about tracking request and response validation to assess if all parts of the API description have been tested. Currently it does not care about unknown requests that are not part of any API description.
Defined Under Namespace
Classes: Plan, TerminalFormatter
Constant Summary
collapse
- Result =
Data.define(:plans, :coverage)
- RouteTask =
Data.define(:path, :request_method, :requests, :responses) do
def finished?
requests.all?(&:finished?) && responses.all?(&:finished?)
end
end
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.current_run ⇒ Object
Returns the value of attribute current_run.
16
17
18
|
# File 'lib/openapi_first/test/coverage.rb', line 16
def current_run
@current_run
end
|
Class Method Details
.install ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/openapi_first/test/coverage.rb', line 18
def install
return if @installed
@after_request_validation = lambda do |validated_request, oad|
track_request(validated_request, oad)
end
@after_response_validation = lambda do |validated_response, request, oad|
track_response(validated_response, request, oad)
end
OpenapiFirst.configure do |config|
config.after_request_validation(&@after_request_validation)
config.after_response_validation(&@after_response_validation)
end
@installed = true
end
|
.plans ⇒ Object
Returns all plans (Plan) that were registered for this run
68
69
70
|
# File 'lib/openapi_first/test/coverage.rb', line 68
def plans
current_run&.values
end
|
.reset ⇒ Object
Clear current coverage run
51
52
53
|
# File 'lib/openapi_first/test/coverage.rb', line 51
def reset
@current_run = nil
end
|
.result ⇒ Object
63
64
65
|
# File 'lib/openapi_first/test/coverage.rb', line 63
def result
Result.new(plans:, coverage:)
end
|
.start(skip_response: nil) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/openapi_first/test/coverage.rb', line 36
def start(skip_response: nil)
@current_run = Test.definitions.values.to_h do |oad|
plan = Plan.for(oad, skip_response:)
[oad.filepath, plan]
end
end
|
.track_request(request, oad) ⇒ Object
55
56
57
|
# File 'lib/openapi_first/test/coverage.rb', line 55
def track_request(request, oad)
current_run[oad.filepath].track_request(request)
end
|
.track_response(response, _request, oad) ⇒ Object
59
60
61
|
# File 'lib/openapi_first/test/coverage.rb', line 59
def track_response(response, _request, oad)
current_run[oad.filepath].track_response(response)
end
|
.uninstall ⇒ Object
43
44
45
46
47
48
|
# File 'lib/openapi_first/test/coverage.rb', line 43
def uninstall
configuration = OpenapiFirst.configuration
configuration.hooks[:after_request_validation].delete(@after_request_validation)
configuration.hooks[:after_response_validation].delete(@after_response_validation)
@installed = nil
end
|