mirror of
https://github.com/pretix/pretix.git
synced 2026-08-10 10:47:00 +00:00
add test cases
note: bezahlcode encoding changed slightly due to actually url-encoding all parameters (comma is now encoded as %2C). i tested with ING app, it accepts both. before: 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123,00&reason=TESTVERANST-12345¤cy=EUR' after: 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123%2C00&reason=TESTVERANST-12345¤cy=EUR'
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import text_unidecode
|
||||
from django.utils.http import urlencode
|
||||
from urllib.parse import urlencode, quote
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
@@ -85,13 +85,13 @@ def euro_bezahlcode(
|
||||
return
|
||||
|
||||
qr_data = f"bank://singlepaymentsepa?" + urlencode({
|
||||
"name": bank_details_sepa_name,
|
||||
"iban":bank_details_sepa_iban,
|
||||
"bic": bank_details_sepa_bic,
|
||||
"name": str(bank_details_sepa_name),
|
||||
"iban": str(bank_details_sepa_iban),
|
||||
"bic": str(bank_details_sepa_bic),
|
||||
"amount": commadecimal(amount),
|
||||
"reason": code,
|
||||
"currency": event.currency,
|
||||
})
|
||||
"reason": str(code),
|
||||
"currency": str(event.currency),
|
||||
}, quote_via=quote)
|
||||
return {
|
||||
"id": "bezahlcode",
|
||||
"label": "BezahlCode",
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import Organizer, Event
|
||||
from pretix.helpers.payment import generate_payment_qr_codes
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def env():
|
||||
o = Organizer.objects.create(name='Verein für Testzwecke e.V.', slug='testverein')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Testveranstaltung', slug='testveranst',
|
||||
date_from=now() + timedelta(days=10),
|
||||
live=True, is_public=False, currency='EUR',
|
||||
)
|
||||
event.settings.invoice_address_from = 'Verein für Testzwecke e.V.'
|
||||
event.settings.invoice_address_from_zipcode = '1234'
|
||||
event.settings.invoice_address_from_city = 'Testhausen'
|
||||
event.settings.invoice_address_from_country = 'CH'
|
||||
|
||||
return o, event
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_payment_qr_codes_euro(env):
|
||||
o, event = env
|
||||
codes = generate_payment_qr_codes(
|
||||
event=event,
|
||||
code='TESTVERANST-12345',
|
||||
amount=Decimal('123.00'),
|
||||
bank_details_sepa_bic='BYLADEM1MIL',
|
||||
bank_details_sepa_iban='DE37796500000069799047',
|
||||
bank_details_sepa_name='Verein für Testzwecke e.V.',
|
||||
)
|
||||
assert len(codes) == 2
|
||||
assert codes[0]['label'] == 'EPC-QR'
|
||||
assert codes[0]['qr_data'] == '''BCD
|
||||
002
|
||||
2
|
||||
SCT
|
||||
BYLADEM1MIL
|
||||
Verein fur Testzwecke e.V.
|
||||
DE37796500000069799047
|
||||
EUR123.00
|
||||
|
||||
|
||||
TESTVERANST-12345
|
||||
|
||||
'''
|
||||
|
||||
assert codes[1]['label'] == 'BezahlCode'
|
||||
assert codes[1]['qr_data'] == 'bank://singlepaymentsepa?name=Verein%20f%C3%BCr%20Testzwecke%20e.V.&iban=DE37796500000069799047&bic=BYLADEM1MIL&amount=123%2C00&reason=TESTVERANST-12345¤cy=EUR'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_payment_qr_codes_swiss(env):
|
||||
o, event = env
|
||||
codes = generate_payment_qr_codes(
|
||||
event=event,
|
||||
code='TESTVERANST-12345',
|
||||
amount=Decimal('123.00'),
|
||||
bank_details_sepa_bic='TESTCHXXXXX',
|
||||
bank_details_sepa_iban='CH6389144757654882127',
|
||||
bank_details_sepa_name='Verein für Testzwecke e.V.',
|
||||
)
|
||||
assert codes[0]['label'] == 'QR-bill'
|
||||
assert codes[0]['qr_data'] == "\r\n".join([
|
||||
"SPC",
|
||||
"0200",
|
||||
"1",
|
||||
"CH6389144757654882127",
|
||||
"K",
|
||||
"Verein fur Testzwecke e.V.",
|
||||
"Verein fur Testzwecke e.V.",
|
||||
"1234 Testhausen",
|
||||
"",
|
||||
"",
|
||||
"CH",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"123.00",
|
||||
"EUR",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"NON",
|
||||
"",
|
||||
"TESTVERANST-12345",
|
||||
"EPD",
|
||||
])
|
||||
Reference in New Issue
Block a user