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