Module: VCR::Errors::UnhandledXmlRequestError::Diffs

Included in:
VCR::Errors::UnhandledXmlRequestError
Defined in:
lib/vcr/errors/unhandled_xml_request_error/diffs.rb

Instance Method Summary collapse

Instance Method Details

#body_diffObject



11
12
13
14
15
16
17
18
# File 'lib/vcr/errors/unhandled_xml_request_error/diffs.rb', line 11

def body_diff
  return if !matched_by_body? && !matched_by_xpath?
  if expected_request
    diff expected_body, received_body
  else
    diff '', format(request)
  end
end

#diff(xml1, xml2) ⇒ Object



20
21
22
# File 'lib/vcr/errors/unhandled_xml_request_error/diffs.rb', line 20

def diff(xml1, xml2)
  ::Diffy::Diff.new(xml1, xml2, context: 2).to_s(:color)
end

#filtred_xpaths(request) ⇒ Object



36
37
38
39
40
# File 'lib/vcr/errors/unhandled_xml_request_error/diffs.rb', line 36

def filtred_xpaths(request)
  xpath_matchers.reduce(nokogirify request) do |memo, matcher|
    matcher.extract_xpath(memo)
  end
end

#format(nodes) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/vcr/errors/unhandled_xml_request_error/diffs.rb', line 24

def format(nodes)
  nokogirify(nodes).tap do |xml|
    xml.xpath('//text()').each do |node|
      if node.content=~/\S/
        node.content = node.content.strip
      else
        node.remove
      end
    end
  end.to_xml
end

#header_diffObject



4
5
6
7
8
9
# File 'lib/vcr/errors/unhandled_xml_request_error/diffs.rb', line 4

def header_diff
  return if !matched_by_headers? || header_diff_keys.empty?
  @header_diff ||= begin
    Hirb::Helpers::AutoTable.render header_diff_keys, fields: [:key, :expected, :got]
  end
end