module BankApi::Clients::BancoSecurity::Balance

Constants

ACCOUNT_NUMBER_COLUMN
AVAILABLE_BALANCE_COLUMN
COUNTABLE_BALANCE_COLUMN

Public Instance Methods

extract_balance(td_pos) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 53
def extract_balance(td_pos)
  xp = "//*[@id=\"body\"]/div[1]/section/div/div/div[3]/div[2]/table/tbody/tr[1]/td[#{td_pos}]"
  money_to_i(browser.search(xpath: xp).text)
end
find_account_balance(account_number) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 9
def find_account_balance(account_number)
  return get_balance_from_accounts_list(account_number) if account_number
  get_balance_from_account_summary
end
get_balance_from_account_summary() click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 29
def get_balance_from_account_summary
  available_balance = extract_balance(1)
  countable_balance = extract_balance(2)
  validate_summary_balance(available_balance, countable_balance)

  {
    available_balance: available_balance,
    countable_balance: countable_balance
  }
end
get_balance_from_accounts_list(account_number) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 14
def get_balance_from_accounts_list(account_number)
  balance = browser.search(".cuentas-corrientes").search("tbody tr").map do |row|
    cells = row.search("td")
    {
      account_number: cells[ACCOUNT_NUMBER_COLUMN].text,
      available_balance: money_to_i(cells[AVAILABLE_BALANCE_COLUMN].text),
      countable_balance: money_to_i(cells[COUNTABLE_BALANCE_COLUMN].text)
    }
  end.find do |row|
    row[:account_number] == account_number
  end
  validate_account_balance(balance, account_number)
  balance
end
money_to_i(text) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 58
def money_to_i(text)
  text.to_s.delete(".").delete("$").delete(" ").to_i
end
validate_account_balance(balance, account_number) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 40
def validate_account_balance(balance, account_number)
  if balance.nil?
    raise BankApi::Balance::InvalidAccountNumber, "Couldn't find balance of account " +
      account_number.to_s
  end
end
validate_summary_balance(available_balance, countable_balance) click to toggle source
# File lib/bank_api/clients/banco_security/concerns/balance.rb, line 47
def validate_summary_balance(available_balance, countable_balance)
  if available_balance.zero? || countable_balance.zero?
    raise BankApi::Balance::MissingAccountBalance, "Couldn't find balance"
  end
end