class Pact::ConsumerContract::Message
Attributes
_id[RW]
contents[RW]
description[RW]
index[RW]
metadata[RW]
provider_state[RW]
provider_states[RW]
Public Class Methods
from_hash(hash, options = {})
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 28 def self.from_hash hash, options = {} opts = options.dup unless opts[:pact_specification_version] opts[:pact_specification_version] = Pact::SpecificationVersion::NIL_VERSION end contents_matching_rules = hash['matchingRules'] && hash['matchingRules']['body'] contents_hash = Pact::MatchingRules.merge(hash['contents'], contents_matching_rules, opts) contents = Pact::ConsumerContract::Message::Contents.from_hash(contents_hash) metadata = hash['metaData'] || hash['metadata'] provider_state_name = parse_provider_state_name(hash['providerState'], hash['providerStates']) provider_states = parse_provider_states(provider_state_name, hash['providerStates']) new(symbolize_keys(hash).merge( contents: contents, provider_state: provider_state_name, provider_states: provider_states, metadata: metadata)) end
new(attributes = {})
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 18 def initialize attributes = {} @description = attributes[:description] @provider_state = attributes[:provider_state] || attributes[:providerState] @provider_states = attributes[:provider_states] || [] @contents = attributes[:contents] @metadata = attributes[:metadata] @_id = attributes[:_id] @index = attributes[:index] end
Private Class Methods
parse_provider_state_name(provider_state, provider_states)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 127 def self.parse_provider_state_name provider_state, provider_states (provider_states && provider_states.first && provider_states.first['name']) || provider_state end
parse_provider_states(provider_state_name, provider_states)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 131 def self.parse_provider_states provider_state_name, provider_states if provider_states && provider_states.any? provider_states.collect do | provider_state_hash | Pact::ProviderState.new(provider_state_hash['name'], provider_state_hash['params']) end elsif provider_state_name [Pact::ProviderState.new(provider_state_name, {})] else [] end end
Public Instance Methods
==(other)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 96 def == other other.is_a?(Message) && to_hash == other.to_hash end
description_with_provider_state_quoted()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 117 def description_with_provider_state_quoted provider_state ? "\"#{description}\" given \"#{provider_state}\"" : "\"#{description}\"" end
eq?(other)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 113 def eq? other self == other end
http?()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 84 def http? false end
match_criterion(target, criterion)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 109 def match_criterion target, criterion target == criterion || (criterion.is_a?(Regexp) && criterion.match(target)) end
matches_criteria?(criteria)
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 100 def matches_criteria? criteria criteria.each do | key, value | unless match_criterion self.send(key.to_s), value return false end end true end
message?()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 88 def message? true end
request()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 56 def request @request ||= Pact::Consumer::Request::Actual.from_hash( path: '/', method: 'POST', query: nil, headers: { 'Content-Type' => 'application/json' }, body: { description: description, providerStates: [{ name: provider_state, params: {} }], metadata: metadata } ) end
response()
click to toggle source
custom media type?
# File lib/pact/consumer_contract/message.rb, line 74 def response @response ||= Pact::Response.new( status: 200, headers: {'Content-Type' => 'application/json'}, body: { contents: contents } ) end
to_hash()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 47 def to_hash { description: description, provider_states: [{ name: provider_state }], contents: contents.contents, metadata: metadata } end
to_s()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 121 def to_s to_hash.to_s end
validate!()
click to toggle source
# File lib/pact/consumer_contract/message.rb, line 92 def validate! raise Pact::InvalidMessageError.new(self) unless description && contents end