module CcyConvertor::ProcessAndValidateOption

Public Instance Methods

validate_amount!(amount) click to toggle source
# File lib/ccy_convertor/process_and_validate_option.rb, line 17
def validate_amount!(amount)
  unless amount.is_a?(Numeric)
    raise CcyConvertor::InvalidAmount, 'options[:amount] must be a number'
  end
end
validate_currency_codes!(currency_codes) click to toggle source
# File lib/ccy_convertor/process_and_validate_option.rb, line 23
def validate_currency_codes!(currency_codes)
  currency_codes.each do |code|
    unless CcyConvertor::Constant::CCY_CODE_AND_NAME[code]
      raise CcyConvertor::InvalidCurrencyCode, "Currency code '#{code}' doesn't exists"
    end
  end
end
validate_currency_support!(currencies, rate_matrix) click to toggle source
# File lib/ccy_convertor/process_and_validate_option.rb, line 31
def validate_currency_support!(currencies, rate_matrix)
  currencies.each do |ccy|
    if rate_matrix[ccy].nil?
      raise CcyConvertor::CurrencyNotSupported, "Currency '#{ccy}' is not supported by OpenExchangeRate"
    end
  end
end
validate_options!(options) click to toggle source
# File lib/ccy_convertor/process_and_validate_option.rb, line 3
def validate_options!(options)
  validate_presence_of_hash_keys!(options, [:from_ccy, :to_ccy, :amount])
  validate_amount!(options[:amount])
  validate_currency_codes!([options[:from_ccy], options[:to_ccy]])
end
validate_presence_of_hash_keys!(options, keys) click to toggle source
# File lib/ccy_convertor/process_and_validate_option.rb, line 9
def validate_presence_of_hash_keys!(options, keys)
  options_not_provided = keys - options.keys
  if options_not_provided.count != 0
    raise ArgumentError,
      "argument hash should have #{options_not_provided.join(', ')} #{options_not_provided.count > 1 ? 'keys' : 'key'}"
  end
end