class Pact::Provider::VerificationResults::Create

Attributes

pact_source[R]
test_results_hash[R]

Public Class Methods

call(pact_source, test_results_hash) click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 7
def self.call pact_source, test_results_hash
  new(pact_source, test_results_hash).call
end
new(pact_source, test_results_hash) click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 11
def initialize pact_source, test_results_hash
  @pact_source = pact_source
  @test_results_hash = test_results_hash
end

Public Instance Methods

call() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 16
def call
  VerificationResult.new(publishable?, !any_failures?, Pact.configuration.provider.application_version, test_results_hash_for_pact_uri)
end

Private Instance Methods

any_failures?() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 26
def any_failures?
  count_failures_for_pact_uri > 0
end
clean_example(example) click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 74
def clean_example(example)
  example.reject{ |k, v| k == :pact_uri || k == :pact_interaction }
end
count_failures_for_pact_uri() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 54
def count_failures_for_pact_uri
  examples_for_pact_uri.count{ |e| e[:status] != 'passed' }
end
example_is_for_interaction?(example, interaction) click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 40
def example_is_for_interaction?(example, interaction)
  # Use the Pact Broker id if supported
  if interaction._id
    example[:pact_interaction]._id == interaction._id
  else
    # fall back to object equality (based on the field values of the interaction)
    example[:pact_interaction] == interaction
  end
end
examples_for_pact_uri() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 50
def examples_for_pact_uri
  @examples_for_pact_uri ||= test_results_hash[:tests].select{ |e| e[:pact_uri] == pact_uri }
end
pact_uri() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 22
def pact_uri
  @pact_uri ||= pact_source.uri
end
publishable?() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 30
def publishable?
  if defined?(@publishable)
    @publishable
  else
    @publishable = pact_source.consumer_contract.interactions.all? do | interaction |
      examples_for_pact_uri.any?{ |e| example_is_for_interaction?(e, interaction) }
    end && examples_for_pact_uri.count > 0
  end
end
test_results_hash_for_pact_uri() click to toggle source
# File lib/pact/provider/verification_results/create.rb, line 58
def test_results_hash_for_pact_uri
  {
    tests: examples_for_pact_uri.collect{ |e| clean_example(e) },
    summary: {
      testCount: examples_for_pact_uri.size,
      failureCount: count_failures_for_pact_uri
    },
    metadata: {
      warning: "These test results use a beta format. Do not rely on it, as it will definitely change.",
      pactVerificationResultsSpecification: {
        version: "1.0.0-beta.1"
      }
    }
  }
end