module Poisol::RequestMatcher
Public Instance Methods
body_matches?(actual_req,stub_req)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 28 def body_matches? actual_req,stub_req return true if actual_req.body == stub_req.body actual_req_body = load_as_json actual_req.body stub_req_body = load_as_json stub_req.body return false unless actual_req_body.class == stub_req_body.class return true if actual_req_body == stub_req_body return matching_hashes? actual_req_body,stub_req_body if actual_req_body.is_a?(Hash) return matching_array? actual_req_body,stub_req_body if actual_req_body.is_a?(Array) end
load_as_json(input)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 38 def load_as_json input begin return Parse.json_to_hash input rescue return input end end
matches?(actual_req,stub_req)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 5 def matches? actual_req,stub_req type_matches?(actual_req,stub_req) && url_macthes?(actual_req,stub_req) && query_matches?(actual_req,stub_req) && body_matches?(actual_req,stub_req) end
matching_array(actuals,expected)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 61 def matching_array actuals,expected return false unless actuals.size == expected.size return actuals.sort == expected.sort unless actual[0].is_a(Hash) expect = expected.clone actuals.each do |actual| match = expect.detect {|expected| matching_hashes? actual,expect} return false if match.blank? end end
matching_hashes?(actuals, expected)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 47 def matching_hashes?(actuals, expected) return false unless actuals.keys.sort == expected.keys.sort actuals.each do |key, actual| expect = expected[key] if actual.is_a?(Hash) && expect.is_a?(Hash) return false unless matching_hashes?(actual, expect) else return false unless expect === actual end end true end
query_matches?(actual_req,stub_req)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 20 def query_matches? actual_req,stub_req return true if actual_req.query==stub_req.query return false if (actual_req.query.blank? || stub_req.query.blank?) actual_query = CGI::parse(actual_req.query) stub_query = CGI::parse(stub_req.query) return matching_hashes? actual_query,stub_query end
type_matches?(actual_req,stub_req)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 12 def type_matches? actual_req,stub_req actual_req.type == stub_req.type end
url_macthes?(actual_req,stub_req)
click to toggle source
# File lib/poisol/stub_mapper/request_matcher.rb, line 16 def url_macthes? actual_req,stub_req actual_req.url == stub_req.url end