| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from django.core.exceptions import ValidationError
- from django.test import TestCase
- from django.utils.translation import gettext_lazy as _
-
- from oscar.apps.offer import custom
- from oscar.test.factories import create_product
-
-
- class CustomRange(object):
- name = "Custom range"
-
- def contains_product(self, product):
- return product.title.startswith("A")
-
- def num_products(self):
- return None
-
-
- class CustomRangeLazy(object):
- name = _("Custom range with gettext_lazy")
-
- def contains_product(self, product):
- return product.title.startswith("B")
-
- def num_products(self):
- return None
-
-
- class TestACustomRange(TestCase):
-
- def test_creating_duplicate_range_fails(self):
- custom.create_range(CustomRange)
- self.assertRaises(ValueError, custom.create_range, CustomRange)
-
- def test_must_have_a_text_name(self):
- try:
- custom.create_range(CustomRangeLazy)
- except ValidationError:
- pass
- else:
- self.fail("Range can't have gettext titles")
-
- def test_correctly_includes_match(self):
- rng = custom.create_range(CustomRange)
- test_product = create_product(title="A tale")
- self.assertTrue(rng.contains_product(test_product))
-
- def test_correctly_excludes_nonmatch(self):
- rng = custom.create_range(CustomRange)
- test_product = create_product(title="B tale")
- self.assertFalse(rng.contains_product(test_product))
|