Sha256: b83aeaad67ced11954a9c73d012e4f5c6a5998adf1e6a9817ed0ff2a23d00991

Contents?: true

Size: 824 Bytes

Versions: 21

Compression:

Stored size: 824 Bytes

Contents

def be_a_valid_grxml_document
  SpeechDocMatcher.new 'GRXML', GRXML_SCHEMA
end

def be_a_valid_ssml_document
  SpeechDocMatcher.new 'SSML', SSML_SCHEMA
end

class SpeechDocMatcher
  attr_reader :subject, :type, :schema

  def initialize(type, schema)
    @type, @schema = type, schema
  end

  def subject=(s)
    @subject = Nokogiri::XML(s.to_xml)
  end

  def failure_message
    " expected #{subject} to be a valid #{type} document\n#{errors}"
  end

  def negative_failure_message
    " expected #{subject} not to be a valid #{type} document"
  end

  def description
    "to be a valid #{type} document"
  end

  def matches?(s)
    self.subject = s
    schema.valid? subject
  end

  def does_not_match?(s)
    !matches? s
  end

  private

  def errors
    schema.validate(subject).map(&:message).join "\n"
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
ruby_speech-2.4.0-java spec/support/matchers.rb
ruby_speech-2.4.0 spec/support/matchers.rb
ruby_speech-2.3.2-java spec/support/matchers.rb
ruby_speech-2.3.2 spec/support/matchers.rb
ruby_speech-2.3.1-java spec/support/matchers.rb
ruby_speech-2.3.1 spec/support/matchers.rb
ruby_speech-2.3.0-java spec/support/matchers.rb
ruby_speech-2.3.0 spec/support/matchers.rb
ruby_speech-2.2.2-java spec/support/matchers.rb
ruby_speech-2.2.2 spec/support/matchers.rb
ruby_speech-2.2.1-java spec/support/matchers.rb
ruby_speech-2.2.1 spec/support/matchers.rb
ruby_speech-2.2.0-java spec/support/matchers.rb
ruby_speech-2.2.0 spec/support/matchers.rb
ruby_speech-2.1.2-java spec/support/matchers.rb
ruby_speech-2.1.2 spec/support/matchers.rb
ruby_speech-2.1.1-java spec/support/matchers.rb
ruby_speech-2.1.1 spec/support/matchers.rb
ruby_speech-2.1.0-java spec/support/matchers.rb
ruby_speech-2.1.0 spec/support/matchers.rb