class RSpecApib::TransactionCoverageValidator

Attributes

parser[RW]

Public Class Methods

new(parser: RSpecApib.config.default_parser) click to toggle source
# File lib/rspec_apib/transaction_coverage_validator.rb, line 5
def initialize(parser: RSpecApib.config.default_parser)
  self.parser = parser
end

Public Instance Methods

validate(transactions:, error_messages:) click to toggle source
# File lib/rspec_apib/transaction_coverage_validator.rb, line 9
def validate(transactions:, error_messages:)
  errors = []
  reporter = TransactionCoverageReport.new(transactions: transactions, parser: parser)
  reporter.report_uncovered(errors: errors)
  reporter.report_undocumented(errors: errors)
  report_summary(errors: errors, error_messages: error_messages)
end

Private Instance Methods

matched_transaction(request:, response:) click to toggle source
# File lib/rspec_apib/transaction_coverage_validator.rb, line 31
def matched_transaction(request:, response:)
  parser.http_transactions.find { |t| t.matches?(request, response, options: {validate_request_schema: :never, validate_response_schema: :never}) }
end
report_summary(errors:, error_messages:) click to toggle source
# File lib/rspec_apib/transaction_coverage_validator.rb, line 19
def report_summary(errors:, error_messages:)
  if !errors.empty?
    error_messages.concat errors
    error_messages << "Coverage Summary: #{uncovered.length} uncovered and #{undocumented.length} undocumented transactions"
    false
  else
    true
  end
end