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.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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_whitelisting(self):
  12. self.range.add_product(self.prod)
  13. self.assertTrue(self.range.contains_product(self.prod))
  14. def test_blacklisting(self):
  15. self.range.excluded_products.add(self.prod)
  16. self.assertFalse(self.range.contains_product(self.prod))
  17. class TestPartialRange(TestCase):
  18. def setUp(self):
  19. self.range = models.Range.objects.create(
  20. name="All products", includes_all_products=False)
  21. self.parent = create_product(structure='parent')
  22. self.child = create_product(structure='child', parent=self.parent)
  23. def test_empty_list(self):
  24. self.assertFalse(self.range.contains_product(self.parent))
  25. self.assertFalse(self.range.contains_product(self.child))
  26. def test_included_classes(self):
  27. self.range.classes.add(self.parent.get_product_class())
  28. self.assertTrue(self.range.contains_product(self.parent))
  29. self.assertTrue(self.range.contains_product(self.child))
  30. def test_includes(self):
  31. self.range.add_product(self.parent)
  32. self.assertTrue(self.range.contains_product(self.parent))
  33. self.assertTrue(self.range.contains_product(self.child))
  34. def test_cant_add_child_product(self):
  35. self.assertRaises(ValueError, self.range.add_product, self.child)
  36. def test_included_class_with_exception(self):
  37. self.range.classes.add(self.parent.get_product_class())
  38. self.range.excluded_products.add(self.parent)
  39. self.assertFalse(self.range.contains_product(self.parent))
  40. self.assertFalse(self.range.contains_product(self.child))
  41. class TestRangeModel(TestCase):
  42. def test_ensures_unique_slugs_are_used(self):
  43. first_range = models.Range.objects.create(name="Foo")
  44. first_range.name = "Bar"
  45. first_range.save()
  46. models.Range.objects.create(name="Foo")