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_runObject (readonly)

Returns the value of attribute current_run.



18
19
20
# File 'lib/openapi_first/test/coverage.rb', line 18

def current_run
  @current_run
end

Class Method Details

.installObject



20
# File 'lib/openapi_first/test/coverage.rb', line 20

def install = Test.install

.plansObject

Returns all plans (Plan) that were registered for this run



49
50
51
# File 'lib/openapi_first/test/coverage.rb', line 49

def plans
  current_run.values
end

.resetObject

Clear current coverage run



32
33
34
# File 'lib/openapi_first/test/coverage.rb', line 32

def reset
  @current_run = {}
end

.resultObject



44
45
46
# File 'lib/openapi_first/test/coverage.rb', line 44

def result
  Result.new(plans:, coverage:)
end

.start(skip_response: nil, skip_route: nil) ⇒ Object



22
23
24
25
26
27
# File 'lib/openapi_first/test/coverage.rb', line 22

def start(skip_response: nil, skip_route: nil)
  @current_run = Test.definitions.values.to_h do |oad|
    plan = Plan.for(oad, skip_response:, skip_route:)
    [oad.key, plan]
  end
end

.track_request(request, oad) ⇒ Object



36
37
38
# File 'lib/openapi_first/test/coverage.rb', line 36

def track_request(request, oad)
  current_run[oad.key]&.track_request(request)
end

.track_response(response, _request, oad) ⇒ Object



40
41
42
# File 'lib/openapi_first/test/coverage.rb', line 40

def track_response(response, _request, oad)
  current_run[oad.key]&.track_response(response)
end

.uninstallObject



29
# File 'lib/openapi_first/test/coverage.rb', line 29

def uninstall = Test.uninstall