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.

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import pytest
  2. from oscar.apps.offer.models import Benefit
  3. from oscar.test import factories
  4. @pytest.fixture
  5. def range():
  6. return factories.RangeFactory()
  7. @pytest.mark.django_db
  8. class TestBenefitProxyModels(object):
  9. """
  10. https://docs.djangoproject.com/en/1.11/topics/db/models/#proxy-models
  11. """
  12. def test_name_and_description(self, range):
  13. """
  14. Tests that the benefit proxy classes all return a name and
  15. description. Unfortunately, the current implementations means
  16. a valid range is required.w
  17. """
  18. for benefit_type, __ in Benefit.TYPE_CHOICES:
  19. benefit = Benefit(type=benefit_type, range=range)
  20. assert all([
  21. benefit.name,
  22. benefit.description,
  23. str(benefit)])
  24. def test_proxy(self, range):
  25. for benefit_type, __ in Benefit.TYPE_CHOICES:
  26. benefit = Benefit(
  27. type=benefit_type, value=10, range=range, max_affected_items=1)
  28. proxy = benefit.proxy()
  29. assert benefit.type == proxy.type
  30. assert benefit.value == proxy.value
  31. assert benefit.range == proxy.range
  32. assert benefit.max_affected_items == proxy.max_affected_items