class RSpecApib::TransactionCoverageReport

Attributes

parser[RW]
transactions[RW]

Public Class Methods

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

Private Class Methods

uncovered_tx_message(tx) click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 49
def self.uncovered_tx_message(tx)
  "#{tx.request.request_method.to_s.upcase} #{tx.request.url} with response (#{tx.response.content_type}) status #{tx.response.status}- Not covered"
end
undocumented_tx_message(tx) click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 53
def self.undocumented_tx_message(tx)
  "#{tx.request.request_method.upcase} #{tx.request.url} with response (#{tx.response.content_type}) status #{tx.response.status} - Not documented"
end

Public Instance Methods

report_uncovered(errors:) click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 33
def report_uncovered(errors:)
  uncovered_transactions.each do |tx|
    errors << self.class.uncovered_tx_message(tx)
  end
end
report_undocumented(errors:) click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 39
def report_undocumented(errors:)
  undocumented.each do |tx|
    errors << self.class.undocumented_tx_message(tx)
  end
end
uncovered_transactions() click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 9
def uncovered_transactions
  documented_transaction_tracker = parser.http_transactions.each_with_object({}) do |t, acc|
    acc[t] = false
    acc
  end
  transactions.each do |requested_tx|
    documented_transaction_tracker.keys.each do |dtx|
      documented_transaction_tracker[dtx] = true if dtx.matches?(requested_tx.request, requested_tx.response)
    end
  end
  documented_transaction_tracker.reject {|_k, v| v}.keys
end
undocumented_transactions() click to toggle source
# File lib/rspec_apib/transaction_coverage_report.rb, line 22
def undocumented_transactions
  results = []
  transactions.each do |requested_tx|
    match = parser.http_transactions.find do |doc_txn|
      doc_txn.matches?(requested_tx.request, requested_tx.response)
    end
    results << requested_tx if match.nil?
  end
  results
end