class CoverallsMulti::Validator

checks that a payload is valid before sending to Coveralls

Constants

SOURCE_FILE_KEYS
TOP_LEVEL_KEYS

Attributes

payload[RW]

Public Class Methods

new(payload) click to toggle source
# File lib/coveralls-multi/validator.rb, line 10
def initialize(payload)
  @payload = payload
end

Public Instance Methods

check_required_keys(required_keys, message = 'Missing required key(s)', payload = @payload) click to toggle source
# File lib/coveralls-multi/validator.rb, line 39
def check_required_keys(required_keys, message = 'Missing required key(s)', payload = @payload)
  missing_keys = []

  required_keys.each do |key|
    missing_keys.push key unless payload[key]
  end

  error = "#{message} - #{missing_keys.join(', ')}"

  raise error unless missing_keys.empty?
end
json?() click to toggle source
# File lib/coveralls-multi/validator.rb, line 18
def json?
  parsed_json = JSON.dump(@payload)
  parsed_json
rescue JSON::UnparserError => e
  puts '[CoverallsMulti] Payload could not be parsed to JSON!'
  raise e
end
run() click to toggle source
# File lib/coveralls-multi/validator.rb, line 14
def run
  return true if json? && valid_coveralls_payload?
end
valid_coveralls_payload?() click to toggle source
# File lib/coveralls-multi/validator.rb, line 26
def valid_coveralls_payload?
  raise 'Payload is empty!' if !@payload || @payload.empty?
  raise 'Payload should be a hash!' unless @payload.is_a?(Hash)

  check_required_keys(TOP_LEVEL_KEYS, 'Missing required top-level key')
  @payload['source_files'].each do |src_file|
    check_required_keys(
      SOURCE_FILE_KEYS, 'Missing required source file key(s)', src_file
    )
  end
  @payload
end