forked from CGM_Public/pretix_original
Add tests and remove redundant checks
This commit is contained in:
@@ -282,11 +282,11 @@ class Order(LoggedModel):
|
||||
if self.event.settings.get('payment_term_last'):
|
||||
if now() > self.event.payment_term_last:
|
||||
return error_messages['late_lastdate']
|
||||
if self.status == self.STATUS_PENDING:
|
||||
return True
|
||||
if not self.event.settings.get('payment_term_accept_late'):
|
||||
return error_messages['late']
|
||||
|
||||
if self.status == self.STATUS_PENDING:
|
||||
return True
|
||||
return self._is_still_available()
|
||||
|
||||
def _is_still_available(self, now_dt: datetime=None) -> Union[bool, str]:
|
||||
|
||||
@@ -115,8 +115,9 @@ def _add_new_items(event: Event, items: List[dict],
|
||||
if i.get('voucher'):
|
||||
try:
|
||||
voucher = Voucher.objects.get(code=i.get('voucher').strip(), event=event)
|
||||
if voucher.redeemed >= voucher.max_usages:
|
||||
return error_messages['voucher_redeemed']
|
||||
except Voucher.DoesNotExist:
|
||||
return error_messages['voucher_invalid']
|
||||
else:
|
||||
if voucher.valid_until is not None and voucher.valid_until < now_dt:
|
||||
return error_messages['voucher_expired']
|
||||
if not voucher.applies_to(item, variation):
|
||||
@@ -135,15 +136,9 @@ def _add_new_items(event: Event, items: List[dict],
|
||||
if i['count'] > v_avail:
|
||||
return error_messages['voucher_redeemed_partial'] % v_avail
|
||||
|
||||
except Voucher.DoesNotExist:
|
||||
return error_messages['voucher_invalid']
|
||||
|
||||
# Fetch all quotas. If there are no quotas, this item is not allowed to be sold.
|
||||
quotas = list(item.quotas.all()) if variation is None else list(variation.quotas.all())
|
||||
|
||||
if voucher and voucher.quota and voucher.quota.pk not in [q.pk for q in quotas]:
|
||||
return error_messages['voucher_invalid_item']
|
||||
|
||||
if item.require_voucher and voucher is None:
|
||||
return error_messages['voucher_required']
|
||||
|
||||
|
||||
@@ -46,6 +46,29 @@ class CartTestMixin:
|
||||
|
||||
|
||||
class CartTest(CartTestMixin, TestCase):
|
||||
|
||||
def test_after_presale(self):
|
||||
self.event.presale_end = now() - timedelta(days=1)
|
||||
self.event.save()
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1'
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
assert 'alert-danger' in response.rendered_content
|
||||
assert not CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists()
|
||||
|
||||
def test_before_presale(self):
|
||||
self.event.presale_start = now() + timedelta(days=1)
|
||||
self.event.save()
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1'
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, '/%s/%s/' % (self.orga.slug, self.event.slug),
|
||||
target_status_code=200)
|
||||
assert 'alert-danger' in response.rendered_content
|
||||
assert not CartPosition.objects.filter(cart_id=self.session_key, event=self.event).exists()
|
||||
|
||||
def test_simple(self):
|
||||
response = self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'item_%d' % self.ticket.id: '1'
|
||||
@@ -355,9 +378,10 @@ class CartTest(CartTestMixin, TestCase):
|
||||
price=23, expires=now() + timedelta(minutes=10)
|
||||
)
|
||||
self.client.post('/%s/%s/cart/add' % (self.orga.slug, self.event.slug), {
|
||||
'variation_%d_%d' % (self.shirt.id, self.shirt_red.id): '1'
|
||||
}, follow=True)
|
||||
cp = CartPosition.objects.get(id=cp.id)
|
||||
self.assertGreater(cp.expires, now())
|
||||
cp.refresh_from_db()
|
||||
self.assertGreater(cp.expires, now() + timedelta(minutes=10))
|
||||
|
||||
def test_renew_expired_successfully(self):
|
||||
cp1 = CartPosition.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user