main
 1# frozen_string_literal: true
 2
 3RSpec::Matchers.define :have_xpath do |xpath|
 4  match do |actual|
 5    xml_document(actual).xpath(xpath, Saml::Kit::Document::NAMESPACES).any?
 6  end
 7
 8  failure_message do |actual|
 9    xml = xml_pretty_print(actual)
10    "Expected xpath: #{xpath.inspect} to match in:\n #{xml}"
11  end
12
13  failure_message_when_negated do |actual|
14    xml = xml_pretty_print(actual)
15    "Expected xpath: #{xpath.inspect} not to match in:\n #{xml}"
16  end
17
18  def xml_pretty_print(raw_xml)
19    xml_document(raw_xml).to_xml(indent: 2)
20  end
21
22  def xml_document(raw_xml)
23    Nokogiri::XML(raw_xml)
24  end
25end