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 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from django.test import TestCase
  2. from oscar.apps.offer import models
  3. from oscar.test.factories import create_product
  4. class TestWholeSiteRange(TestCase):
  5. def setUp(self):
  6. self.range = models.Range.objects.create(
  7. name="All products", includes_all_products=True)
  8. self.prod = create_product()
  9. def test_all_products_range(self):
  10. self.assertTrue(self.range.contains_product(self.prod))
  11. def test_all_products_range_with_exception(self):
  12. self.range.excluded_products.add(self.prod)
  13. self.assertFalse(self.range.contains_product(self.prod))
  14. def test_whitelisting(self):
  15. self.range.add_product(self.prod)
  16. self.assertTrue(self.range.contains_product(self.prod))
  17. def test_blacklisting(self):
  18. self.range.excluded_products.add(self.prod)
  19. self.assertFalse(self.range.contains_product(self.prod))
  20. class TestPartialRange(TestCase):
  21. def setUp(self):
  22. self.range = models.Range.objects.create(
  23. name="All products", includes_all_products=False)
  24. self.prod = create_product()
  25. def test_empty_list(self):
  26. self.assertFalse(self.range.contains_product(self.prod))
  27. def test_included_classes(self):
  28. self.range.classes.add(self.prod.get_product_class())
  29. self.assertTrue(self.range.contains_product(self.prod))
  30. def test_included_class_with_exception(self):
  31. self.range.classes.add(self.prod.get_product_class())
  32. self.range.excluded_products.add(self.prod)
  33. self.assertFalse(self.range.contains_product(self.prod))
  34. class TestRangeModel(TestCase):
  35. def test_ensures_unique_slugs_are_used(self):
  36. first_range = models.Range.objects.create(name="Foo")
  37. first_range.name = "Bar"
  38. first_range.save()
  39. models.Range.objects.create(name="Foo")