Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from decimal import Decimal as D
  2. import datetime
  3. from django.conf import settings
  4. from django.utils import unittest
  5. from django.core.exceptions import ValidationError
  6. from oscar.apps.product.models import Item, ItemClass
  7. from oscar.apps.partner.models import Partner, StockRecord
  8. from oscar.test.helpers import create_product
  9. class DummyWrapper(object):
  10. def availability(self, stockrecord):
  11. return 'Dummy response'
  12. def dispatch_date(self, stockrecord):
  13. return "Another dummy response"
  14. class StockRecordTests(unittest.TestCase):
  15. def setUp(self):
  16. self.product = create_product(price=D('10.00'))
  17. def test_get_price_incl_tax_defaults_to_no_tax(self):
  18. self.assertEquals(D('10.00'), self.product.stockrecord.price_incl_tax)
  19. def test_get_price_excl_tax_returns_correct_value(self):
  20. self.assertEquals(D('10.00'), self.product.stockrecord.price_excl_tax)
  21. class DefaultWrapperTests(unittest.TestCase):
  22. def test_default_wrapper_for_in_stock(self):
  23. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=10)
  24. self.assertEquals("In stock (10 available)", product.stockrecord.availability)
  25. def test_default_wrapper_for_out_of_stock(self):
  26. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=0)
  27. self.assertEquals("Out of stock", product.stockrecord.availability)
  28. def test_dispatch_date_for_in_stock(self):
  29. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=1)
  30. tomorrow = datetime.date.today() + datetime.timedelta(days=1)
  31. self.assertEquals(tomorrow, product.stockrecord.dispatch_date)
  32. def test_dispatch_date_for_out_of_stock(self):
  33. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=0)
  34. date = datetime.date.today() + datetime.timedelta(days=7)
  35. self.assertEquals(date, product.stockrecord.dispatch_date)
  36. class CustomWrapperTests(unittest.TestCase):
  37. def setUp(self):
  38. self._old_setting = settings.OSCAR_PARTNER_WRAPPERS
  39. settings.OSCAR_PARTNER_WRAPPERS = {
  40. 'Acme': 'oscar.apps.partner.tests.DummyWrapper'
  41. }
  42. def tearDown(self):
  43. settings.OSCAR_PARTNER_WRAPPERS = self._old_setting
  44. def test_wrapper_availability_gets_called(self):
  45. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=10)
  46. self.assertEquals("Dummy response", product.stockrecord.availability)
  47. def test_wrapper_dispatch_date_gets_called(self):
  48. product = create_product(price=D('10.00'), partner="Acme", num_in_stock=10)
  49. self.assertEquals("Another dummy response", product.stockrecord.dispatch_date)