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

range_tests.py 2.6KB

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