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
- #body_diff ⇒ Object
- #diff(xml1, xml2) ⇒ Object
- #filtred_xpaths(request) ⇒ Object
- #format(nodes) ⇒ Object
- #header_diff ⇒ Object
Instance Method Details
#body_diff ⇒ Object
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_diff ⇒ Object
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 |