Allow to enter gift cards into the voucher input (Z#23171961) (#4670)

This commit is contained in:
Raphael Michel
2024-12-05 13:43:46 +01:00
committed by GitHub
parent 94a64ba53a
commit 6b199a2b9c
8 changed files with 192 additions and 58 deletions

View File

@@ -2306,6 +2306,25 @@ class CartTest(CartTestMixin, TestCase):
assert cp1.voucher is None
assert cp2.voucher is None
def test_voucher_apply_is_a_giftcard(self):
with scopes_disabled():
CartPosition.objects.create(
event=self.event, cart_id=self.session_key, item=self.ticket,
price=23, listed_price=23, price_after_voucher=23, expires=now() + timedelta(minutes=10)
)
CartPosition.objects.create(
event=self.event, cart_id=self.session_key, item=self.shirt, variation=self.shirt_blue,
price=8, expires=now() + timedelta(minutes=10),
)
gc = self.orga.issued_gift_cards.create(secret="GIFTCARD", currency=self.event.currency)
gc.transactions.create(value=Decimal("12.24"), acceptor=self.orga)
html = self.client.post('/%s/%s/cart/voucher' % (self.orga.slug, self.event.slug), {
'voucher': 'GIFTCARD',
}, follow=True)
assert "alert-success" in html.rendered_content
assert "€12.24" in html.rendered_content
def test_discount(self):
with scopes_disabled():
Discount.objects.create(event=self.event, condition_min_count=2, benefit_discount_matching_percent=20,

View File

@@ -55,6 +55,7 @@ from pretix.base.models import (
)
from pretix.base.models.items import SubEventItem, SubEventItemVariation
from pretix.base.reldate import RelativeDate, RelativeDateWrapper
from pretix.testutils.sessions import get_cart_session_key
class EventTestMixin:
@@ -1003,6 +1004,25 @@ class VoucherRedeemItemDisplayTest(EventTestMixin, SoupTest):
assert 'name="variation_%d_%d' % (self.item.pk, var1.pk) not in html.rendered_content
assert 'name="variation_%d_%d' % (self.item.pk, var2.pk) not in html.rendered_content
def test_voucher_is_a_gift_card(self):
gc = self.orga.issued_gift_cards.create(secret="GIFTCARD", currency=self.event.currency)
gc.transactions.create(value=Decimal("12.00"), acceptor=self.orga)
html = self.client.get('/%s/%s/redeem?voucher=%s' % (self.orga.slug, self.event.slug, 'GIFTCARD'), follow=True)
assert "alert-success" in html.rendered_content
assert "€12.00" in html.rendered_content
payments = self.client.session['carts'][get_cart_session_key(self.client, self.event)]["payments"]
assert payments[0]["info_data"]["gift_card_secret"] == "GIFTCARD"
def test_voucher_is_a_gift_card_but_invalid(self):
gc = self.orga.issued_gift_cards.create(secret="GIFTCARD", currency=self.event.currency, expires=now() - datetime.timedelta(days=1))
gc.transactions.create(value=Decimal("12.00"), acceptor=self.orga)
html = self.client.get('/%s/%s/redeem?voucher=%s' % (self.orga.slug, self.event.slug, 'GIFTCARD'), follow=True)
assert "alert-danger" in html.rendered_content
assert "This gift card is no longer valid" in html.rendered_content
class WaitingListTest(EventTestMixin, SoupTest):
@scopes_disabled()