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.

priority_offers_tests.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import mock
  2. import datetime
  3. from django.test import TestCase
  4. from django.utils import timezone
  5. from oscar.core.loading import get_model
  6. from oscar.apps.offer import utils
  7. from oscar.test import factories
  8. Voucher = get_model('voucher', 'Voucher')
  9. class TestPriorityOffers(TestCase):
  10. def test_site_offers_are_ordered(self):
  11. factories.create_offer(name="A", priority=0)
  12. factories.create_offer(name="B", priority=7)
  13. factories.create_offer(name="C", priority=5)
  14. factories.create_offer(name="D", priority=7)
  15. factories.create_offer(name="E", priority=1)
  16. offers = utils.Applicator().get_site_offers()
  17. ordered_names = [offer.name for offer in offers]
  18. self.assertEqual(["B", "D", "C", "E", "A"], ordered_names)
  19. def test_basket_offers_are_ordered(self):
  20. voucher = Voucher.objects.create(
  21. name="Test voucher",
  22. code="test",
  23. start_datetime=timezone.now(),
  24. end_datetime=timezone.now() + datetime.timedelta(days=12))
  25. voucher.offers = [
  26. factories.create_offer(name="A", priority=0),
  27. factories.create_offer(name="B", priority=7),
  28. factories.create_offer(name="C", priority=5),
  29. factories.create_offer(name="D", priority=7),
  30. factories.create_offer(name="E", priority=1),
  31. ]
  32. basket = factories.create_basket()
  33. user = mock.Mock()
  34. # Apply voucher to basket
  35. basket.vouchers.add(voucher)
  36. offers = utils.Applicator().get_basket_offers(basket, user)
  37. ordered_names = [offer.name for offer in offers]
  38. self.assertEqual(["B", "D", "C", "E", "A"], ordered_names)