Sha256: 38adfa2dad11ede52a47b6d1aed90d0f6ec731298e10a84d17076a7afc79981e

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

RSpec::Matchers.define :have_validated_service do |group_name, service_name|
  @requested_name = service_name
  @contract = Pacto.contract_registry.find{ |c| c.name == @requested_name }
  match do
    unless @contract.nil?
      @validations = Pacto::ValidationRegistry.instance.validations.select {|v|
        # FIXME: Same contract on multiple servers is currently problematic
        v.contract && v.contract.name == @contract.name
      }
      !(@validations.empty? || @validations.map(&:successful?).include?(false))
    end
  end

  failure_message_for_should do
    buffer = StringIO.new
    buffer.puts "expected Pacto to have validated #{@requested_name}"
    if @contract.nil?
      buffer.puts '  but no known contract matches that name'
    elsif @validations.empty?
      buffer.puts '  but no request matched the pattern'
      buffer.puts "    pattern: #{@contract.request_pattern}"
      buffer.puts '    received:'
      buffer.puts "#{WebMock::RequestRegistry.instance}"
    elsif @validations.map(&:successful?).include?(false)
      buffer.puts '  but validation errors were found:'
      buffer.print '    '
      validation_results = @validations.map(&:results).flatten.compact
      buffer.puts validation_results.join "\n    "
      validation_results.each do |validation_result|
        buffer.puts "    #{validation_result}"
      end
    else
      # FIXME: ensure this is unreachable?
      buffer.puts '  but an unknown problem occurred'
    end
    buffer.string
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
polytrix-0.0.1 features/pacto/extensions/matchers.rb