You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

range_tests.py 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import datetime
  2. from django.conf import settings
  3. from django.test import TestCase
  4. from oscar.apps.offer import models
  5. from oscar.test.helpers import create_product
  6. class TestWholeSiteRangeWithGlobalBlacklist(TestCase):
  7. def setUp(self):
  8. self.range = models.Range.objects.create(
  9. name="All products", includes_all_products=True)
  10. def tearDown(self):
  11. settings.OSCAR_OFFER_BLACKLIST_PRODUCT = None
  12. def test_blacklisting_prevents_products_being_in_range(self):
  13. settings.OSCAR_OFFER_BLACKLIST_PRODUCT = lambda p: True
  14. prod = create_product()
  15. self.assertFalse(self.range.contains_product(prod))
  16. def test_blacklisting_can_use_product_class(self):
  17. settings.OSCAR_OFFER_BLACKLIST_PRODUCT = lambda p: p.product_class.name == 'giftcard'
  18. prod = create_product(product_class="giftcard")
  19. self.assertFalse(self.range.contains_product(prod))
  20. def test_blacklisting_doesnt_exlude_everything(self):
  21. settings.OSCAR_OFFER_BLACKLIST_PRODUCT = lambda p: p.product_class.name == 'giftcard'
  22. prod = create_product(product_class="book")
  23. self.assertTrue(self.range.contains_product(prod))
  24. class TestWholeSiteRange(TestCase):
  25. def setUp(self):
  26. self.range = models.Range.objects.create(name="All products", includes_all_products=True)
  27. self.prod = create_product()
  28. def test_all_products_range(self):
  29. self.assertTrue(self.range.contains_product(self.prod))
  30. def test_all_products_range_with_exception(self):
  31. self.range.excluded_products.add(self.prod)
  32. self.assertFalse(self.range.contains_product(self.prod))
  33. def test_whitelisting(self):
  34. self.range.included_products.add(self.prod)
  35. self.assertTrue(self.range.contains_product(self.prod))
  36. def test_blacklisting(self):
  37. self.range.excluded_products.add(self.prod)
  38. self.assertFalse(self.range.contains_product(self.prod))
  39. class TestPartialRange(TestCase):
  40. def setUp(self):
  41. self.range = models.Range.objects.create(
  42. name="All products", includes_all_products=False)
  43. self.prod = create_product()
  44. def test_empty_list(self):
  45. self.assertFalse(self.range.contains_product(self.prod))
  46. def test_included_classes(self):
  47. self.range.classes.add(self.prod.product_class)
  48. self.assertTrue(self.range.contains_product(self.prod))
  49. def test_included_class_with_exception(self):
  50. self.range.classes.add(self.prod.product_class)
  51. self.range.excluded_products.add(self.prod)
  52. self.assertFalse(self.range.contains_product(self.prod))