예제 #1
0
def test_apply_tax_to_price_include_tax(taxes):
    money = Money(100, 'USD')
    assert apply_tax_to_price(taxes, 'standard',
                              money) == TaxedMoney(net=Money('81.30', 'USD'),
                                                   gross=Money(100, 'USD'))
    assert apply_tax_to_price(taxes, 'medical',
                              money) == TaxedMoney(net=Money('92.59', 'USD'),
                                                   gross=Money(100, 'USD'))
예제 #2
0
def test_apply_tax_to_price_include_fallback_to_standard_rate(taxes):
    money = Money(100, 'USD')
    assert apply_tax_to_price(taxes, 'space suits',
                              money) == TaxedMoney(net=Money('81.30', 'USD'),
                                                   gross=Money(100, 'USD'))

    taxed_money = TaxedMoney(net=Money(100, 'USD'), gross=Money(100, 'USD'))
    assert apply_tax_to_price(taxes, 'space suits', taxed_money) == TaxedMoney(
        net=Money('81.30', 'USD'), gross=Money(100, 'USD'))
예제 #3
0
def test_apply_tax_to_price_no_taxes_return_taxed_money_range():
    money_range = MoneyRange(Money(100, 'USD'), Money(200, 'USD'))
    taxed_money_range = TaxedMoneyRange(
        TaxedMoney(net=Money(100, 'USD'), gross=Money(100, 'USD')),
        TaxedMoney(net=Money(200, 'USD'), gross=Money(200, 'USD')))

    assert (apply_tax_to_price(None, 'standard',
                               money_range) == taxed_money_range)
    assert (apply_tax_to_price(None, 'standard',
                               taxed_money_range) == taxed_money_range)
예제 #4
0
def test_apply_tax_to_price_do_not_include_tax_fallback_to_standard_rate(
        site_settings, taxes):
    site_settings.include_taxes_in_prices = False
    site_settings.save()

    money = Money(100, 'USD')
    taxed_money = TaxedMoney(net=Money(100, 'USD'), gross=Money(123, 'USD'))
    assert apply_tax_to_price(taxes, 'space suits', money) == taxed_money
예제 #5
0
def test_apply_tax_to_price_do_not_include_tax(site_settings, taxes):
    site_settings.include_taxes_in_prices = False
    site_settings.save()

    money = Money(100, 'USD')
    assert apply_tax_to_price(taxes, 'standard',
                              money) == TaxedMoney(net=Money(100, 'USD'),
                                                   gross=Money(123, 'USD'))
    assert apply_tax_to_price(taxes, 'medical',
                              money) == TaxedMoney(net=Money(100, 'USD'),
                                                   gross=Money(108, 'USD'))

    taxed_money = TaxedMoney(net=Money(100, 'USD'), gross=Money(100, 'USD'))
    assert apply_tax_to_price(taxes, 'standard',
                              taxed_money) == TaxedMoney(net=Money(100, 'USD'),
                                                         gross=Money(
                                                             123, 'USD'))
    assert apply_tax_to_price(taxes, 'medical',
                              taxed_money) == TaxedMoney(net=Money(100, 'USD'),
                                                         gross=Money(
                                                             108, 'USD'))
예제 #6
0
def test_apply_tax_to_price_no_taxes_raise_typeerror_for_invalid_type():
    with pytest.raises(TypeError):
        assert apply_tax_to_price(None, 'standard', 100)
예제 #7
0
def test_apply_tax_to_price_no_taxes_return_taxed_money():
    money = Money(100, 'USD')
    taxed_money = TaxedMoney(net=Money(100, 'USD'), gross=Money(100, 'USD'))

    assert apply_tax_to_price(None, 'standard', money) == taxed_money
    assert apply_tax_to_price(None, 'medical', taxed_money) == taxed_money