Class: Synthra::Types::FinanceBanking::Currency

Inherits:
Base
  • Object
show all
Defined in:
lib/synthra/types/finance_banking/banking.rb

Overview

Currency type

Constant Summary collapse

FALLBACK_CODES =

Fallback currency codes if Faker is unavailable

ISO 4217 currency codes used when Faker cannot generate codes.

Returns:

  • (Array<String>)

    list of 3-letter currency codes

%w[
  USD EUR GBP JPY CNY INR BRL CAD AUD CHF
  SEK NOK DKK NZD SGD HKD KRW MXN ZAR RUB
  TRY PLN CZK HUF RON BGN HRK ILS AED SAR
  THB MYR IDR PHP VND EGP NGN KES MAD PKR
].freeze

Instance Method Summary collapse

Instance Method Details

#generate_edge(rng, context, args) ⇒ Object



109
110
111
# File 'lib/synthra/types/finance_banking/banking.rb', line 109

def generate_edge(rng, context, args)
  ["USD", "EUR", "GBP"].sample(random: rng.instance_variable_get(:@random))
end

#generate_invalid(rng, context, args) ⇒ Object



113
114
115
# File 'lib/synthra/types/finance_banking/banking.rb', line 113

def generate_invalid(rng, context, args)
  [nil, "XX", "123", [], {}].sample(random: rng.instance_variable_get(:@random))
end

#generate_random(rng, context, args) ⇒ String

Generate a random currency code

Uses Faker::Currency.code for realistic ISO 4217 codes.

Examples:

generate_random(rng, {})
# => "EUR"

Parameters:

  • rng (Generator::RNG)

    random number generator

  • args (Hash)

    type arguments (not used)

Returns:

  • (String)

    three-letter currency code



95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/synthra/types/finance_banking/banking.rb', line 95

def generate_random(rng, context, args)
  adapter = faker_adapter(context)
  if adapter
    adapter.currency_code

  else
    Faker::Currency.code
  end

rescue StandardError
  rng.sample(FALLBACK_CODES)
end