class DhEasy::Qa::ValidateRules

Attributes

data[R]
errored_item[RW]
errors[R]
rules[R]

Public Class Methods

new(data, errors, rules) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 9
def initialize(data, errors, rules)
  @data = data
  @errors = errors
  @rules = rules
end

Public Instance Methods

run() click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 15
def run
  puts "Validating Rules"
  handle_rules
end

Private Instance Methods

check_for_required_failure(data_hash, field_to_validate) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 63
def check_for_required_failure(data_hash, field_to_validate)
  if fails_required_check?(data_hash, field_to_validate)
    add_errored_item(data_hash, field_to_validate, 'required')
    false
  else
    true
  end
end
fails_required_check?(data_hash, field_to_validate) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 72
def fails_required_check?(data_hash, field_to_validate)
  data_hash[field_to_validate].nil? || (data_hash[field_to_validate].class == String && data_hash[field_to_validate].empty?)
end
handle_rules() click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 22
def handle_rules
  data.each do |data_hash|
    reset_errored_item
    rules.each{|field_to_validate, options|
      if passes_required_check?(options, data_hash, field_to_validate)
        options.each{|validation, value|
          case validation
          when 'type'
            ValidateType.new(data_hash, field_to_validate, value, rules, errored_item).run
          when 'value'
            ValidateValue.new(data_hash, field_to_validate, value, errored_item).run
          when 'length'
            validate_length(data_hash, field_to_validate, value)
          when /required|threshold|if/
            nil
          else
            unknown_validation_error(validation) if validation !~ /format/
          end
        }
      end
    }
    errors[:errored_items].push(errored_item) if errored_item && !errored_item[:failures].empty?
  end
end
passes_required_check?(options, data_hash, field_to_validate) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 47
def passes_required_check?(options, data_hash, field_to_validate)
  if options['required'] == true
    if options['if']
      if pass_if?(options['if'], data_hash)
        check_for_required_failure(data_hash, field_to_validate)
      else
        false
      end
    else
      check_for_required_failure(data_hash, field_to_validate)
    end
  else
    false
  end
end
reset_errored_item() click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 80
def reset_errored_item
  self.errored_item = { failures: {} }
end
unknown_validation_error(validation) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 84
def unknown_validation_error(validation)
  raise StandardError.new("The validation '#{validation}' is unknown.")
end
validate_length(data_hash, field_to_validate, length) click to toggle source
# File lib/dh_easy/qa/validate_rules.rb, line 76
def validate_length(data_hash, field_to_validate, length)
  add_errored_item(data_hash, field_to_validate, 'length') if data_hash[field_to_validate].to_s.length != length
end