Sha256: b3b5b6ab7a5aba124dabaec3b8f3f852d4a95b5ac473f04fa18e5862bcac31a6
Contents?: true
Size: 1.64 KB
Versions: 9
Compression:
Stored size: 1.64 KB
Contents
require 'pact/consumer_contract/request' require 'pact/symbolize_keys' require 'pact/consumer_contract/active_support_support' module Pact class Interaction include ActiveSupportSupport include SymbolizeKeys attr_accessor :description, :request, :response, :provider_state def initialize attributes = {} @description = attributes[:description] @request = attributes[:request] @response = attributes[:response] @provider_state = attributes[:provider_state] end def self.from_hash hash request = Pact::Request::Expected.from_hash(hash['request']) new(symbolize_keys(hash).merge({request: request})) end def to_hash hash = { :description => @description } hash[:provider_state] = @provider_state if @provider_state #Easier to read when provider state at top hash.merge(:request => @request.as_json, :response => @response) end def as_json options = {} fix_all_the_things to_hash end def to_json(options = {}) as_json.to_json(options) end def matches_criteria? criteria criteria.each do | key, value | unless match_criterion self.send(key.to_s), value return false end end true end def match_criterion target, criterion target == criterion || (criterion.is_a?(Regexp) && criterion.match(target)) end def == other other.is_a?(Interaction) && as_json == other.as_json end def eq? other self == other end def to_s JSON.pretty_generate(self) end end end
Version data entries
9 entries across 9 versions & 1 rubygems