spec/support/matchers.rb in ruby_speech-0.2.2 vs spec/support/matchers.rb in ruby_speech-0.3.0

- old
+ new

@@ -1,5 +1,9 @@ +def be_a_valid_grxml_document + GRXMLMatcher.new +end + def be_a_valid_ssml_document SSMLMatcher.new end class SSMLMatcher @@ -38,8 +42,51 @@ private def errors SSML_SCHEMA.validate(subject).map(&:message).join "\n" + end + +end + + +class GRXMLMatcher + attr_reader :subject + + def subject=(s) + if s.is_a? Nokogiri::XML::Document + @subject = s + else + doc = Nokogiri::XML::Document.new + doc << s + @subject = doc + end + end + + def failure_message + " expected #{subject} to be a valid GRXML document\n#{errors}" + end + + def negative_failure_message + " expected #{subject} not to be a valid GRXML document" + end + + def description + "to be a valid GRXML document" + end + + def matches?(s) + self.subject = s + GRXML_SCHEMA.valid? subject + end + + def does_not_match?(s) + !matches? s + end + + private + + def errors + GRXML_SCHEMA.validate(subject).map(&:message).join "\n" end end