Class: Pact::ConsumerContract
Constant Summary
Constants included
from PactFile
PactFile::OPEN_TIMEOUT, PactFile::READ_TIMEOUT, PactFile::RETRY_LIMIT
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from PactFile
#read, #render_pact, #save_pactfile_to_tmp
Methods included from Logging
included, #logger
included, #symbolize_keys
Constructor Details
Returns a new instance of ConsumerContract.
26
27
28
29
30
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 26
def initialize(attributes = {})
@interactions = attributes[:interactions] || []
@consumer = attributes[:consumer]
@provider = attributes[:provider]
end
|
Instance Attribute Details
#consumer ⇒ Object
Returns the value of attribute consumer.
23
24
25
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 23
def consumer
@consumer
end
|
#interactions ⇒ Object
Returns the value of attribute interactions.
22
23
24
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 22
def interactions
@interactions
end
|
#provider ⇒ Object
Returns the value of attribute provider.
24
25
26
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 24
def provider
@provider
end
|
Class Method Details
.from_hash(hash) ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 32
def self.from_hash(hash)
hash = symbolize_keys(hash)
new(
:consumer => ServiceConsumer.from_hash(hash[:consumer]),
:provider => ServiceProvider.from_hash(hash[:provider]),
:interactions => hash[:interactions].collect { |hash| Interaction.from_hash(hash)}
)
end
|
.from_json(string) ⇒ Object
41
42
43
44
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 41
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 = {}) ⇒ Object
46
47
48
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 46
def self.from_uri uri, options = {}
from_json(Pact::PactFile.read(uri, options))
end
|
.maintain_backwards_compatiblity_with_producer_keys(string) ⇒ Object
50
51
52
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 50
def self.maintain_backwards_compatiblity_with_producer_keys string
string.gsub('"producer":', '"provider":').gsub('"producer_state":', '"provider_state":')
end
|
Instance Method Details
#each ⇒ Object
68
69
70
71
72
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 68
def each
interactions.each do | interaction |
yield interaction
end
end
|
#find_interaction(criteria) ⇒ Object
54
55
56
57
58
59
60
61
62
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 54
def find_interaction criteria
interactions = find_interactions criteria
if interactions.size == 0
raise "Could not find interaction matching #{criteria} in pact file between #{consumer.name} and #{provider.name}."
elsif interactions.size > 1
raise "Found more than 1 interaction matching #{criteria} in pact file between #{consumer.name} and #{provider.name}."
end
interactions.first
end
|
#find_interactions(criteria) ⇒ Object
64
65
66
|
# File 'lib/pact/consumer_contract/consumer_contract.rb', line 64
def find_interactions criteria
interactions.select{ | interaction| interaction.matches_criteria?(criteria)}
end
|