def test_exchange_currency_raises_for_nonsupported_type(): with pytest.raises(TypeError): class PseudoMoneyType: currency = 'USD' converted_value = exchange_currency(PseudoMoneyType(), 'GBP') with pytest.raises(AttributeError): converted_value = exchange_currency('str', 'GBP')
def test_exchange_currency_for_money_range(): value = MoneyRange(Money(10, 'USD'), Money(15, 'USD')) value_converted = exchange_currency(value, 'GBP') assert value_converted.currency == 'GBP' assert value_converted.start == Money(40, currency='GBP') assert value_converted.stop == Money(60, currency='GBP')
def test_exchange_currency_for_taxed_money(): value = TaxedMoney(Money(10, 'USD'), Money(12, 'USD')) value_converted = exchange_currency(value, 'GBP') assert value_converted.currency == 'GBP' assert value_converted.net == Money(40, currency='GBP') assert value_converted.gross == Money(48, currency='GBP')
def test_two_base_currencies_convert_price_uses_passed_conversion_rate(): value = Money(10, currency='USD') custom_rate = Decimal('4.2') converted_value = exchange_currency(value, 'GBP', conversion_rate=custom_rate) assert converted_value == Money(42, 'GBP')
def test_exchange_currency_uses_passed_conversion_rate(): value = Money(10, currency='USD') custom_rate = Decimal(5) converted_value = exchange_currency(value, 'GBP', conversion_rate=custom_rate) assert converted_value == Money(50, currency='GBP')
def test_exchange_currency_for_money_range_uses_passed_conversion_rate(): value = MoneyRange(Money(10, 'USD'), Money(15, 'USD')) custom_rate = Decimal(2) value_converted = exchange_currency(value, 'GBP', conversion_rate=custom_rate) assert value_converted.currency == 'GBP' assert value_converted.start == Money(20, currency='GBP') assert value_converted.stop == Money(30, currency='GBP')
def test_exchange_currency_for_taxed_money_uses_passed_conversion_rate(): value = TaxedMoney(Money(10, 'USD'), Money(12, 'USD')) custom_rate = Decimal(2) value_converted = exchange_currency(value, 'GBP', conversion_rate=custom_rate) assert value_converted.currency == 'GBP' assert value_converted.net == Money(20, currency='GBP') assert value_converted.gross == Money(24, currency='GBP')
def to_local_currency(price, currency): if not settings.OPENEXCHANGERATES_API_KEY: return if isinstance(price, PriceRange): from_currency = price.min_price.currency else: from_currency = price.currency if currency != from_currency: try: return exchange_currency(price, currency) except ValueError: pass
def test_exchange_currency_for_taxed_money_range(): value = TaxedMoneyRange(TaxedMoney(Money(10, 'USD'), Money(12, 'USD')), TaxedMoney(Money(20, 'USD'), Money(24, 'USD'))) value_converted = exchange_currency(value, 'GBP') assert value_converted.currency == 'GBP' assert value_converted.start.currency == 'GBP' assert value_converted.start.net == Money(40, currency='GBP') assert value_converted.start.gross == Money(48, currency='GBP') assert value_converted.stop.currency == 'GBP' assert value_converted.stop.net == Money(80, currency='GBP') assert value_converted.stop.gross == Money(96, currency='GBP')
def to_local_currency(price, currency): """this function was gotten from core.utils, might not work well""" if not settings.OPENEXCHANGERATES_API_KEY: return if isinstance(price, PriceRange): from_currency = price.min_price.currency else: from_currency = price.currency if currency != from_currency: try: return exchange_currency(price, currency) except ValueError: pass
def to_local_currency(price, currency): if price is None: return None if not settings.OPENEXCHANGERATES_API_KEY: return None if isinstance(price, MoneyRange): from_currency = price.start.currency else: from_currency = price.currency if currency != from_currency: try: return exchange_currency(price, currency) except ValueError: pass return None
def test_exchange_currency_for_taxed_money_range_uses_passed_conversion_rate(): value = TaxedMoneyRange(TaxedMoney(Money(10, 'USD'), Money(12, 'USD')), TaxedMoney(Money(20, 'USD'), Money(24, 'USD'))) custom_rate = Decimal(2) value_converted = exchange_currency(value, 'GBP', conversion_rate=custom_rate) assert value_converted.currency == 'GBP' assert value_converted.start.currency == 'GBP' assert value_converted.start.net.currency == 'GBP' assert value_converted.start.net.amount == 20 assert value_converted.start.gross.currency == 'GBP' assert value_converted.start.gross.amount == 24 assert value_converted.stop.currency == 'GBP' assert value_converted.stop.net.currency == 'GBP' assert value_converted.stop.net.amount == 40 assert value_converted.stop.gross.currency == 'GBP' assert value_converted.stop.gross.amount == 48
def test_two_base_currencies_the_same_currency_uses_no_conversion(): value = Money(10, currency='USD') converted_value = exchange_currency(value, 'USD') assert converted_value == value
def test_convert_other_currency_to_base_currency(): value = Money(20, currency='EUR') converted_value = exchange_currency(value, 'USD') assert converted_value == Money(10, currency='USD')
def test_convert_two_non_base_currencies(): value = Money(20, currency='EUR') converted_value = exchange_currency(value, 'GBP') assert converted_value == Money(40, currency='GBP')