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