def test_precision(): currency = Currency('USD') assert currency.precision == 2 currency = Currency('JPY') assert currency.precision == 0
def test_construction(): currency = Currency('USD') assert currency.code == 'USD' assert currency.precision == 2 assert currency.display_name() == 'US Dollar' assert currency.symbol() == '$' with pytest.raises(InvalidCurrencyFormat): Currency('dummy value')
def __new__(cls, amount, currency): self = super().__new__(cls, amount) if not isinstance(currency, Currency): currency = Currency(str(currency)) self._currency = currency return self
def test_currency_equality(): """ The currency 3 letter code is what makes something unique """ curr1 = Currency(code="ABC", numeric="1000", name="ABC Currency", symbol=u"$", decimals=2, countries=['My Country']) curr2 = Currency(code="ABC", numeric="1001", name="ABC Currency (Same numeric code)", symbol=u"#", decimals=1, countries=['My Country 2']) assert curr1 == curr2
def test_currency_inequality(): """ The currency 3 letter code is what makes something unique """ curr1 = Currency(code="ABC", numeric="1000", name="My Currency", symbol=u"$", decimals=2, countries=['My Country']) curr2 = Currency(code="BCD", numeric="1000", name="My Currency", symbol=u"$", decimals=2, countries=['My Country']) assert curr1 != curr2
def get_account_transactions(account_id): account_transactions = query_rows( """SELECT ts.name as source, at.amount AS amount, tt.name AS type, at.timestamp AS timestamp, u.username AS transaction_user FROM account_transactions AS at JOIN transaction_types AS tt ON tt.transaction_type_id = at.transaction_type_id JOIN transaction_source as ts ON ts.source_id = at.source_id LEFT JOIN account_transaction_user as atu ON at.transaction_id = atu.transaction_id LEFT JOIN users as u ON u.user_id = atu.user_id WHERE account_id = ? ORDER BY timestamp DESC""", (account_id, )) for a in account_transactions: a["amount"] = Currency(a["amount"]) return account_transactions
def test_currency_equality_against_other(): """ The currency can't (currently) be compared to something else... """ curr1 = Currency(code="ABC", numeric="1000", name="ABC Currency", symbol=u"$", decimals=2, countries=['My Country']) assert curr1 != 1000
def test_locale(): currency = Currency('USD') assert currency.display_name() == 'US Dollar' assert currency.display_name('pt_PT') == 'dólar dos Estados Unidos' assert currency.display_name('de_DE') == 'US-Dollar' assert currency.symbol() == '$' assert currency.symbol('pt_PT') == 'US$' assert currency.symbol('de_DE') == '$'
def test_currency_equality_against_string(): """ The currency can be compared to a string """ curr1 = Currency(code="ABC", numeric="1000", name="ABC Currency", symbol=u"$", decimals=2, countries=['My Country']) assert curr1 == 'ABC' assert curr1 != 'DEF' assert curr1 == u'ABC' assert curr1 != u'DEF'
def to(self, currency): """Returns the equivalent money object in another currency.""" if currency == self._currency: return self if xrates.backend is None: raise ExchangeBackendNotSet() if not isinstance(currency, Currency): currency = Currency(str(currency)) rate = xrates.backend.quotation(self._currency.code, currency.code) if rate is None: raise ExchangeRateNotFound(xrates.backend_name, self._currency, currency) return self.__class__(self * rate, currency)
def make_withdrawl(request): amount = Currency(request.form_data["amount"]) account_id = request.params["account_id"] user_id = request.session["user"]["user_id"] db = get_db_connection() c = db.cursor() c.execute( "INSERT INTO account_transactions (account_id, amount, transaction_type_id, timestamp, source_id) VALUES(?,?,2,CURRENT_TIMESTAMP,2)", (account_id, int(amount))) c.execute( "INSERT INTO account_transaction_user (transaction_id, user_id) VALUES(?,?)", (c.lastrowid, user_id)) db.commit() request.session["feedback"] = [ "withdrawl amount" + str(amount) + " for account " + account_id ] response = Redirect('/') return response
# -*- encoding=utf-8 from money import Currency class CurrencySource(dict): def get_default(self): return self['XXX'] CURRENCY = CurrencySource() CURRENCY['XXX'] = Currency(code="XXX", numeric="999") # # Definitions of ISO 4217 Currencies # Source: http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/currency_codes/currency_codes_list-1.htm # CURRENCY['AED'] = Currency(code='AED', prefix=u'د.إ', numeric='784', name='UAE Dirham', countries=['UNITED ARAB EMIRATES']) CURRENCY['AFN'] = Currency(code='AFN', suffix=u'؋', numeric='971', name='Afghani', countries=['AFGHANISTAN']) CURRENCY['ALL'] = Currency(code='ALL', prefix=u'L', numeric='008', name='Lek', countries=['ALBANIA']) CURRENCY['AMD'] = Currency(code='AMD',
def test_currency_equality(): assert USD == Currency("United States dollar", "USD", "$")
def test_create_dinar(): dinar = Currency("Bahraini dinar", "BHD", digits=3) assert dinar.name == "Bahraini dinar" assert dinar.code == "BHD" assert dinar.symbol is None assert dinar.digits == 3
def test_create_peso(): peso = Currency("Mexican peso", "MXN") assert peso.name == "Mexican peso" assert peso.code == "MXN" assert peso.symbol is None assert peso.digits == 2
def test_create_dollar(): dollar = Currency("United States dollar", "USD", "$") assert dollar.name == "United States dollar" assert dollar.code == "USD" assert dollar.symbol == "$" assert dollar.digits == 2
import pytest from money import Money, Currency, DifferentCurrencyError USD = Currency("United States dollar", "USD", "$") BHD = Currency("Bahraini dinar", "BHD", digits=3) # def test_cannot_convert(): # rate = [.074, "USD", "EUR"] # with pytest.raises(ValueError): # convert(rates, .074, "USD", "SWE") def test_create_dollar(): dollar = Currency("United States dollar", "USD", "$") assert dollar.name == "United States dollar" assert dollar.code == "USD" assert dollar.symbol == "$" assert dollar.digits == 2 def test_create_peso(): peso = Currency("Mexican peso", "MXN") assert peso.name == "Mexican peso" assert peso.code == "MXN" assert peso.symbol is None assert peso.digits == 2 def test_create_dinar(): dinar = Currency("Bahraini dinar", "BHD", digits=3) assert dinar.name == "Bahraini dinar" assert dinar.code == "BHD"
def test_str(): assert str(Currency('USD')) == 'USD' assert str(Currency('JPY')) == 'JPY'
def test_eq(): assert Currency('USD') == Currency('USD') assert Currency('USD') == 'USD'
def test_ne(): assert Currency('USD') != Currency('JPY') assert Currency('USD') != 'JPY'
def test_creation_internal_types(self): curr = Currency(code='AAA', name=u'My Currency') result = Money(Decimal('777'), currency=curr) self.assertEqual(result.amount, Decimal("777")) self.assertEqual(result.currency.code, 'AAA') self.assertEqual(result.currency.name, 'My Currency')
def parse_value(value): return Money.int_to_money(value.amount, Currency.get(value.currency))
def money(self): return Money.int_to_money(self.amount, Currency.get(self.currency))