|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+import datetime
|
|
1
|
2
|
import threading
|
|
2
|
3
|
import time
|
|
3
|
4
|
from decimal import Decimal as D
|
|
|
@@ -7,6 +8,7 @@ from django.contrib.auth.models import AnonymousUser
|
|
7
|
8
|
from django.http import HttpRequest
|
|
8
|
9
|
from django.test import TestCase, TransactionTestCase
|
|
9
|
10
|
from django.test.utils import override_settings
|
|
|
11
|
+from django.utils import timezone
|
|
10
|
12
|
|
|
11
|
13
|
from oscar.apps.catalogue.models import Product, ProductClass
|
|
12
|
14
|
from oscar.apps.checkout import calculators
|
|
|
@@ -266,6 +268,19 @@ class TestPlaceOrderWithVoucher(TestCase):
|
|
266
|
268
|
with pytest.raises(ValueError):
|
|
267
|
269
|
place_order(creator, basket=basket, order_number='12347', user=user)
|
|
268
|
270
|
|
|
|
271
|
+ def test_expired_voucher(self):
|
|
|
272
|
+ user = AnonymousUser()
|
|
|
273
|
+ basket = factories.create_basket()
|
|
|
274
|
+ creator = OrderCreator()
|
|
|
275
|
+
|
|
|
276
|
+ voucher = factories.VoucherFactory(usage=Voucher.SINGLE_USE)
|
|
|
277
|
+ voucher.offers.add(factories.create_offer(offer_type='Voucher'))
|
|
|
278
|
+ basket.vouchers.add(voucher)
|
|
|
279
|
+ voucher.end_datetime = timezone.now() - datetime.timedelta(days=100)
|
|
|
280
|
+ voucher.save()
|
|
|
281
|
+ place_order(creator, basket=basket, order_number='12346', user=user)
|
|
|
282
|
+ assert voucher.applications.count() == 0
|
|
|
283
|
+
|
|
269
|
284
|
|
|
270
|
285
|
class TestConcurrentOrderPlacement(TransactionTestCase):
|
|
271
|
286
|
|