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.

test_manager.py 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import datetime
  2. from django.test import TestCase
  3. from django.utils import timezone
  4. from oscar.apps.offer import models
  5. from oscar.test import factories
  6. class TestActiveOfferManager(TestCase):
  7. def test_includes_offers_in_date_range(self):
  8. now = timezone.now()
  9. start = now - datetime.timedelta(days=1)
  10. end = now + datetime.timedelta(days=1)
  11. factories.create_offer(start=start, end=end)
  12. filtered_offers = models.ConditionalOffer.active.all()
  13. self.assertEqual(1, len(filtered_offers))
  14. def test_includes_offers_with_null_start_date(self):
  15. now = timezone.now()
  16. end = now + datetime.timedelta(days=1)
  17. factories.create_offer(start=None, end=end)
  18. filtered_offers = models.ConditionalOffer.active.all()
  19. self.assertEqual(1, len(filtered_offers))
  20. def test_includes_offers_with_null_end_date(self):
  21. now = timezone.now()
  22. start = now - datetime.timedelta(days=1)
  23. factories.create_offer(start=start, end=None)
  24. filtered_offers = models.ConditionalOffer.active.all()
  25. self.assertEqual(1, len(filtered_offers))
  26. def test_includes_offers_with_null_start_and_end_date(self):
  27. factories.create_offer(start=None, end=None)
  28. filtered_offers = models.ConditionalOffer.active.all()
  29. self.assertEqual(1, len(filtered_offers))
  30. def test_filters_out_expired_offers(self):
  31. # Create offer that is available but with the wrong status
  32. now = timezone.now()
  33. start = now - datetime.timedelta(days=3)
  34. end = now - datetime.timedelta(days=1)
  35. factories.create_offer(start=start, end=end)
  36. filtered_offers = models.ConditionalOffer.active.all()
  37. self.assertEqual(0, len(filtered_offers))
  38. def test_filters_out_offers_yet_to_start(self):
  39. # Create offer that is available but with the wrong status
  40. now = timezone.now()
  41. start = now + datetime.timedelta(days=1)
  42. end = now + datetime.timedelta(days=3)
  43. factories.create_offer(start=start, end=end)
  44. filtered_offers = models.ConditionalOffer.active.all()
  45. self.assertEqual(0, len(filtered_offers))
  46. def test_filters_out_suspended_offers(self):
  47. # Create offer that is available but with the wrong status
  48. factories.create_offer(
  49. status=models.ConditionalOffer.SUSPENDED)
  50. filtered_offers = models.ConditionalOffer.active.all()
  51. self.assertEqual(0, len(filtered_offers))