class BusinessCentral::Object::Validation

Public Class Methods

new(validation_rules = [], object_params = {}) click to toggle source
# File lib/business_central/object/validation.rb, line 6
def initialize(validation_rules = [], object_params = {})
  @validation_rules = validation_rules
  @object_params = object_params
  @errors = []
end

Public Instance Methods

valid?() click to toggle source
# File lib/business_central/object/validation.rb, line 12
def valid?
  @validation_rules.each do |rules_key, rules_value|
    rules_value.each do |validation_key, validation_value|
      if required?(validation_key, validation_value, @object_params[rules_key].to_s)
        @errors << { field: rules_key, message: 'is a required field' }
      end

      if exceeds_maximum_length?(validation_key, validation_value, @object_params[rules_key].to_s)
        @errors << { field: rules_key, message: "has exceeded the maximum length #{validation_value}" }
      end

      if not_inclusive_of?(validation_key, validation_value, @object_params[rules_key].to_s)
        @errors << { field: rules_key, message: "is not one of #{validation_value.join(', ')}" }
      end

      if date_type?(validation_key, validation_value, @object_params[rules_key])
        @errors << { field: rules_key, message: 'is not a date' }
      end
    end
  end

  raise InvalidObjectException, @errors if @errors.any?

  true
end

Private Instance Methods

date_type?(validation_rule, validation_value, value) click to toggle source
# File lib/business_central/object/validation.rb, line 52
def date_type?(validation_rule, validation_value, value)
  validation_rule == :date && validation_value == true && !value.is_a?(Date) && !value.nil?
end
exceeds_maximum_length?(validation_rule, validation_value, value) click to toggle source
# File lib/business_central/object/validation.rb, line 44
def exceeds_maximum_length?(validation_rule, validation_value, value)
  validation_rule == :maximum_length && value.length > validation_value
end
not_inclusive_of?(validation_rule, validation_value, value) click to toggle source
# File lib/business_central/object/validation.rb, line 48
def not_inclusive_of?(validation_rule, validation_value, value)
  validation_rule == :inclusion_of && !validation_value.include?(value) && !value.blank?
end
required?(validation_rule, validation_value, value) click to toggle source
# File lib/business_central/object/validation.rb, line 40
def required?(validation_rule, validation_value, value)
  validation_rule == :required && validation_value == true && value.blank?
end