Add tests and remove redundant checks

This commit is contained in:
Raphael Michel
2017-02-17 16:19:03 +01:00
parent d94c67bc7a
commit 7e135be012
3 changed files with 31 additions and 12 deletions

View File

@@ -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]:

View File

@@ -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']

View File

@@ -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(