| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from decimal import Decimal as D
- from itertools import product
-
- from django.test import TestCase
-
- from oscar.core.prices import Price
-
-
- class TestPriceObject(TestCase):
- def test_can_be_instantiated_with_tax_amount(self):
- price = Price("USD", D("10.00"), tax=D("2.00"))
- self.assertTrue(price.is_tax_known)
- self.assertEqual(D("12.00"), price.incl_tax)
-
- def test_can_have_tax_set_later(self):
- price = Price("USD", D("10.00"))
- price.tax = D("2.00")
- self.assertEqual(D("12.00"), price.incl_tax)
-
- def test_price_equals_reflexivity(self):
- for price in (
- Price(currency="USD", excl_tax=D("10.00")),
- Price(currency="USD", excl_tax=D("10.00"), tax=D("2.00")),
- Price(currency="USD", excl_tax=D("10.00"), incl_tax=D("12.00")),
- ):
- self.assertEqual(price, price)
-
- def test_price_equals_formats(self):
- price1 = Price(currency="USD", excl_tax=D("10.00"), tax=D("2.00"))
- price2 = Price(currency="USD", excl_tax=D("10.00"), incl_tax=D("12.00"))
- self.assertEqual(price1, price2)
-
- def test_price_equals_currency_matters(self):
- price1 = Price(currency="EUR", excl_tax=D("10.00"), tax=D("2.00"))
- price2 = Price(currency="USD", excl_tax=D("10.00"), tax=D("2.00"))
- self.assertNotEqual(price1, price2)
-
- def test_price_equals_transitivity(self):
- prices = (
- Price(currency="EUR", excl_tax=D("10.00"), tax=D("2.00")),
- Price(currency="USD", excl_tax=D("10.00"), tax=D("2.00")),
- Price(currency="USD", excl_tax=D("10.00"), incl_tax=D("12.00")),
- Price(currency="USD", excl_tax=D("10.00"), tax=D("8.00")),
- )
- prices_product = product(prices, prices)
- for price1, price2 in prices_product:
- self.assertEqual(price1 == price2, price2 == price1)
|