| 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)
|