예제 #1
0
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')
예제 #2
0
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')
예제 #3
0
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')
예제 #4
0
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')
예제 #5
0
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')
예제 #6
0
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')
예제 #7
0
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')
예제 #8
0
파일: __init__.py 프로젝트: arneb/saleor
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
예제 #9
0
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')
예제 #10
0
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
예제 #11
0
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
예제 #12
0
파일: __init__.py 프로젝트: flymr/saleor-1
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
예제 #13
0
파일: __init__.py 프로젝트: mirumee/saleor
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
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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')
예제 #17
0
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')