Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

test_priority_offers.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import datetime
  2. from unittest import mock
  3. from django.test import TestCase
  4. from django.utils import timezone
  5. from oscar.apps.offer import utils
  6. from oscar.core.loading import get_model
  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. usage=Voucher.MULTI_USE,
  24. start_datetime=timezone.now(),
  25. end_datetime=timezone.now() + datetime.timedelta(days=12))
  26. voucher.offers.set([
  27. factories.create_offer(name="A", priority=0),
  28. factories.create_offer(name="B", priority=7),
  29. factories.create_offer(name="C", priority=5),
  30. factories.create_offer(name="D", priority=7),
  31. factories.create_offer(name="E", priority=1),
  32. ])
  33. basket = factories.create_basket()
  34. user = mock.Mock()
  35. # Apply voucher to basket
  36. basket.vouchers.add(voucher)
  37. offers = utils.Applicator().get_basket_offers(basket, user)
  38. ordered_names = [offer.name for offer in offers]
  39. self.assertEqual(["B", "D", "C", "E", "A"], ordered_names)