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