Refs #82 -- Make order expiry more clear (#116)

This commit is contained in:
Raphael Michel
2016-05-07 17:03:32 +02:00
parent c9350dde40
commit 944b5db0bf
14 changed files with 126 additions and 21 deletions

View File

@@ -103,6 +103,10 @@ class QuotaTestCase(BaseQuotaTestCase):
order.expires = now() - timedelta(days=3)
order.save()
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_ORDERED, 0))
order.status = Order.STATUS_EXPIRED
order.save()
self.assertEqual(self.item1.check_quotas(), (Quota.AVAILABILITY_OK, 1))
def test_ordered_multi_quota(self):
@@ -234,6 +238,7 @@ class OrderTestCase(BaseQuotaTestCase):
self.assertEqual(self.order.status, Order.STATUS_PAID)
def test_paid_expired_available(self):
self.order.status = Order.STATUS_EXPIRED
self.order.expires = now() - timedelta(days=2)
self.order.save()
mark_order_paid(self.order)
@@ -241,6 +246,7 @@ class OrderTestCase(BaseQuotaTestCase):
self.assertEqual(self.order.status, Order.STATUS_PAID)
def test_paid_expired_partial(self):
self.order.status = Order.STATUS_EXPIRED
self.order.expires = now() - timedelta(days=2)
self.order.save()
self.quota.size = 1
@@ -255,6 +261,7 @@ class OrderTestCase(BaseQuotaTestCase):
def test_paid_expired_unavailable(self):
self.order.expires = now() - timedelta(days=2)
self.order.status = Order.STATUS_EXPIRED
self.order.save()
self.quota.size = 0
self.quota.save()
@@ -266,6 +273,13 @@ class OrderTestCase(BaseQuotaTestCase):
self.order = Order.objects.get(id=self.order.id)
self.assertIn(self.order.status, (Order.STATUS_PENDING, Order.STATUS_EXPIRED))
def test_paid_after_deadline_but_not_expired(self):
self.order.expires = now() - timedelta(days=2)
self.order.save()
mark_order_paid(self.order)
self.order = Order.objects.get(identity=self.order.identity)
self.assertEqual(self.order.status, Order.STATUS_PAID)
def test_paid_expired_unavailable_force(self):
self.order.expires = now() - timedelta(days=2)
self.order.save()

View File

@@ -3,9 +3,9 @@ from datetime import timedelta
import pytest
from django.utils.timezone import now
from pretix.base.models import Event, Organizer
from pretix.base.models import Event, Order, Organizer
from pretix.base.payment import FreeOrderProvider
from pretix.base.services.orders import _create_order
from pretix.base.services.orders import _create_order, expire_orders
@pytest.fixture
@@ -42,3 +42,46 @@ def test_expiry_last(event):
dt=today, payment_provider=FreeOrderProvider(event),
locale='de')
assert (order.expires - today).days == 5
@pytest.mark.django_db
def test_expiring(event):
o1 = Order.objects.create(
code='FOO', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=0, payment_provider='banktransfer'
)
o2 = Order.objects.create(
code='FO2', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() - timedelta(days=10),
total=0, payment_provider='banktransfer'
)
expire_orders(None)
o1 = Order.objects.get(id=o1.id)
assert o1.status == Order.STATUS_PENDING
o2 = Order.objects.get(id=o2.id)
assert o2.status == Order.STATUS_EXPIRED
@pytest.mark.django_db
def test_expiring_auto_disabled(event):
event.settings.set('payment_term_expire_automatically', False)
o1 = Order.objects.create(
code='FOO', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() + timedelta(days=10),
total=0, payment_provider='banktransfer'
)
o2 = Order.objects.create(
code='FO2', event=event, email='dummy@dummy.test',
status=Order.STATUS_PENDING,
datetime=now(), expires=now() - timedelta(days=10),
total=0, payment_provider='banktransfer'
)
expire_orders(None)
o1 = Order.objects.get(id=o1.id)
assert o1.status == Order.STATUS_PENDING
o2 = Order.objects.get(id=o2.id)
assert o2.status == Order.STATUS_PENDING

View File

@@ -87,7 +87,7 @@ def test_order_transition_to_paid_in_time_success(client, env):
@pytest.mark.django_db
def test_order_transition_to_paid_expired_quota_left(client, env):
o = Order.objects.get(id=env[2].id)
o.expires = now() - timedelta(days=2)
o.status = Order.STATUS_EXPIRED
o.save()
q = Quota.objects.create(event=env[0], size=10)
q.items.add(env[3])
@@ -103,7 +103,7 @@ def test_order_transition_to_paid_expired_quota_left(client, env):
@pytest.mark.django_db
def test_order_transition_to_paid_expired_quota_full(client, env):
o = Order.objects.get(id=env[2].id)
o.expires = now() - timedelta(days=2)
o.status = Order.STATUS_EXPIRED
o.save()
q = Quota.objects.create(event=env[0], size=0)
q.items.add(env[3])
@@ -112,7 +112,7 @@ def test_order_transition_to_paid_expired_quota_full(client, env):
'status': 'p'
})
o = Order.objects.get(id=env[2].id)
assert o.status == Order.STATUS_PENDING
assert o.status == Order.STATUS_EXPIRED
@pytest.mark.django_db