Class: PayCertify::Gateway::Customer::Validation

Inherits:
Base::Validation show all
Defined in:
lib/paycertify/gateway/customer.rb

Constant Summary collapse

ALL_VALIDATIONS =
[
  # Mandatory fields
  { name: :app_customer_id, validation: :no_validation, required: true },
  { name: :type, validation: :type_validation, required: true },
  { name: :name, validation: :no_validation, required: true },
  
  # Optional fields
  { name: :zip, validation: :zip_validation, required: false },
  { name: :email, validation: :email_validation, required: false },
  { name: :status, validation: :status_validation, required: false }
]
ALLOWED_TYPES =
%w(add update delete)
ALLOWED_STATUSES =
%w(active inactive pending closed)

Constants inherited from Base::Validation

Base::Validation::CREDIT_CARD_REGEX, Base::Validation::EMAIL_REGEX

Instance Attribute Summary

Attributes inherited from Base::Validation

#attributes, #errors

Instance Method Summary collapse

Methods inherited from Base::Validation

#add_error, #amount_validation, #card_number_validation, #email_validation, #expiration_month_validation, #expiration_year_validation, #no_validation, #presence_validation, #set_attribute, #value_for, #zip_validation

Constructor Details

#initialize(attributes = {}) ⇒ Validation

Returns a new instance of Validation.



43
44
45
46
47
48
49
50
# File 'lib/paycertify/gateway/customer.rb', line 43

def initialize(attributes={})
  super(attributes)

  ALL_VALIDATIONS.each do |attribute|
    presence_validation(attribute) if attribute[:required]
    send(attribute[:validation], attribute) if value_for(attribute).present?
  end
end

Instance Method Details

#type_validation(attribute) ⇒ Object



52
53
54
55
56
# File 'lib/paycertify/gateway/customer.rb', line 52

def type_validation(attribute)
  unless value_for(attribute).try(:to_s).in?(ALLOWED_TYPES)
    add_error(attribute, "Must be one of #{ALLOWED_TYPES.join(', ')}")
  end
end