discourse/spec/support/match_html_matcher.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

24 lines
778 B
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'nokogiri/xml/parse_options'
RSpec::Matchers.define :match_html do |expected|
match do |actual|
2013-10-05 00:49:39 +08:00
a = make_canonical_html(expected).to_html.gsub(/\s+/, " ").strip
b = make_canonical_html(actual).to_html.gsub(/\s+/, " ").strip
a.eql? b
end
2015-04-25 23:47:20 +08:00
failure_message do |actual|
"after sanitizing for extra white space and compactness, expected:\n#{actual}\n to match:\n#{expected}"
end
2015-04-25 23:47:20 +08:00
failure_message_when_negated do |actual|
"after sanitizing for extra white space and compactness, expected:\n#{actual}\n not to match:\n#{expected}"
end
def make_canonical_html(html)
Nokogiri::HTML5(html) { |config| config[:options] = Nokogiri::XML::ParseOptions::NOBLANKS | Nokogiri::XML::ParseOptions::COMPACT }
end
end