Module: CcyConvertor::ProcessAndValidateOption
- Included in:
- RateProvider
- Defined in:
- lib/ccy_convertor/process_and_validate_option.rb
Instance Method Summary collapse
- #validate_amount!(amount) ⇒ Object
- #validate_currency_codes!(currency_codes) ⇒ Object
- #validate_currency_support!(currencies, rate_matrix) ⇒ Object
- #validate_options!(options) ⇒ Object
- #validate_presence_of_hash_keys!(options, keys) ⇒ Object
Instance Method Details
#validate_amount!(amount) ⇒ Object
17 18 19 20 21 |
# 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) ⇒ Object
23 24 25 26 27 28 29 |
# 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) ⇒ Object
31 32 33 34 35 36 37 |
# 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) ⇒ Object
3 4 5 6 7 |
# File 'lib/ccy_convertor/process_and_validate_option.rb', line 3 def () validate_presence_of_hash_keys!(, [:from_ccy, :to_ccy, :amount]) validate_amount!([:amount]) validate_currency_codes!([[:from_ccy], [:to_ccy]]) end |
#validate_presence_of_hash_keys!(options, keys) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/ccy_convertor/process_and_validate_option.rb', line 9 def validate_presence_of_hash_keys!(, keys) = keys - .keys if .count != 0 raise ArgumentError, "argument hash should have #{.join(', ')} #{.count > 1 ? 'keys' : 'key'}" end end |