class Pact::ConsumerContract

Attributes

consumer[RW]
interactions[RW]
provider[RW]

Public Class Methods

add_parser(consumer_contract_parser) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 35
def self.add_parser consumer_contract_parser
  parsers.unshift(consumer_contract_parser)
end
from_hash(hash) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 43
def self.from_hash(hash)
  parsers.each do | parser |
    return parser.call(hash) if parser.can_parse?(hash)
  end
  raise Pact::UnrecognizePactFormatError.new("This document does not use a recognised Pact format: #{hash}")
end
from_json(string) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 50
def self.from_json string
  deserialised_object = JSON.load(maintain_backwards_compatiblity_with_producer_keys(string))
  from_hash(deserialised_object)
end
from_uri(uri, options = {}) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 55
def self.from_uri uri, options = {}
  from_json(Pact::PactFile.read(uri, options))
rescue UnrecognizePactFormatError
  raise Pact::UnrecognizePactFormatError.new("This document does not use a recognised Pact format. Please check that #{uri} is a valid pact file.")
end
maintain_backwards_compatiblity_with_producer_keys(string) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 61
def self.maintain_backwards_compatiblity_with_producer_keys string
  string.gsub('"producer":', '"provider":').gsub('"producer_state":', '"provider_state":') if string
end
new(attributes = {}) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 29
def initialize(attributes = {})
  @interactions = attributes[:interactions] || []
  @consumer = attributes[:consumer]
  @provider = attributes[:provider]
end
parsers() click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 39
def self.parsers
  @parsers ||= [Pact::HttpConsumerContractParser.new]
end

Public Instance Methods

each() { |interaction| ... } click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 79
def each
  interactions.each do | interaction |
    yield interaction
  end
end
find_interaction(criteria) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 65
def find_interaction criteria
  interactions = find_interactions criteria
  if interactions.size == 0
    raise Pact::Error.new("Could not find interaction matching #{criteria} in pact file between #{consumer.name} and #{provider.name}.")
  elsif interactions.size > 1
    raise Pact::Error.new("Found more than 1 interaction matching #{criteria} in pact file between #{consumer.name} and #{provider.name}.")
  end
  interactions.first
end
find_interactions(criteria) click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 75
def find_interactions criteria
  interactions.select{ | interaction| interaction.matches_criteria?(criteria)}
end
writable_interactions() click to toggle source
# File lib/pact/consumer_contract/consumer_contract.rb, line 85
def writable_interactions
  interactions.reject do |interaction|
    # For the sake of backwards compatibility, only reject interactions where
    # write_to_pact is explicitly set to false
    interaction.respond_to?(:metadata) && 
      !interaction.metadata.nil? && 
      interaction.metadata.key?(:write_to_pact) &&
      interaction.metadata[:write_to_pact] == false
  end
end