mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Added tests for invoicing and template tags
This commit is contained in:
92
src/tests/base/test_invoices.py
Normal file
92
src/tests/base/test_invoices.py
Normal file
@@ -0,0 +1,92 @@
|
||||
from datetime import timedelta
|
||||
|
||||
import pytest
|
||||
from django.utils.timezone import now
|
||||
from decimal import Decimal
|
||||
|
||||
from pretix.base.models import Event, Organizer, Order, Item, OrderPosition, InvoiceAddress
|
||||
from pretix.base.payment import FreeOrderProvider
|
||||
from pretix.base.services.invoices import generate_invoice
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def env():
|
||||
o = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
event = Event.objects.create(
|
||||
organizer=o, name='Dummy', slug='dummy',
|
||||
date_from=now(), plugins='banktransfer'
|
||||
)
|
||||
o = 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',
|
||||
payment_fee=Decimal('0.25'), payment_fee_tax_rate=0,
|
||||
payment_fee_tax_value=0
|
||||
)
|
||||
ticket = Item.objects.create(event=event, name='Early-bird ticket',
|
||||
category=None, default_price=23,
|
||||
admission=True)
|
||||
OrderPosition.objects.create(
|
||||
order=o,
|
||||
item=ticket,
|
||||
variation=None,
|
||||
price=Decimal("14"),
|
||||
)
|
||||
return event, o
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_locale_setting(env):
|
||||
event, order = env
|
||||
event.settings.set('invoice_language', 'de')
|
||||
inv = generate_invoice(order)
|
||||
assert inv.locale == 'de'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_locale_user(env):
|
||||
event, order = env
|
||||
order.locale = 'en'
|
||||
event.settings.set('invoice_language', '__user__')
|
||||
inv = generate_invoice(order)
|
||||
assert inv.locale == order.locale
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_address(env):
|
||||
event, order = env
|
||||
event.settings.set('invoice_language', 'en')
|
||||
InvoiceAddress.objects.create(company='Acme Company', street='221B Baker Street',
|
||||
zipcode='12345', city='London', country='UK',
|
||||
order=order)
|
||||
inv = generate_invoice(order)
|
||||
assert inv.invoice_to == "Acme Company\n\n221B Baker Street\n12345 London\nUK"
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_address_vat_id(env):
|
||||
event, order = env
|
||||
event.settings.set('invoice_language', 'en')
|
||||
InvoiceAddress.objects.create(company='Acme Company', street='221B Baker Street',
|
||||
name='Sherlock Holmes', zipcode='12345', city='London', country='UK',
|
||||
vat_id='UK1234567', order=order)
|
||||
inv = generate_invoice(order)
|
||||
assert inv.invoice_to == "Acme Company\nSherlock Holmes\n221B Baker Street\n12345 London\nUK\nVAT-ID: UK1234567"
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_positions(env):
|
||||
event, order = env
|
||||
inv = generate_invoice(order)
|
||||
assert inv.lines.count() == 2
|
||||
first = inv.lines.first()
|
||||
assert 'Early-bird' in first.description
|
||||
assert first.gross_value == Decimal('23.00')
|
||||
|
||||
last = inv.lines.last()
|
||||
assert 'Payment' in last.description
|
||||
assert last.gross_value == order.payment_fee
|
||||
assert last.tax_rate == order.payment_fee_tax_rate
|
||||
assert last.tax_value == order.payment_fee_tax_value
|
||||
assert inv.invoice_to == "Acme Company\n\n221B Baker Street\n12345 London\nUK"
|
||||
38
src/tests/base/test_templatetag.py
Normal file
38
src/tests/base/test_templatetag.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import pytest
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import NoReverseMatch
|
||||
from django.template import Context, Template, TemplateSyntaxError
|
||||
from django.test import RequestFactory
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import Event, Organizer
|
||||
from pretix.multidomain.models import KnownDomain
|
||||
|
||||
TEMPLATE_REPLACE_PAGE = Template("{% load urlreplace %}{% url_replace request 'page' 3 %}")
|
||||
|
||||
|
||||
def test_urlreplace_add__first_parameter():
|
||||
factory = RequestFactory()
|
||||
request = factory.get('/customer/details')
|
||||
rendered = TEMPLATE_REPLACE_PAGE.render(Context({
|
||||
'request': request
|
||||
})).strip()
|
||||
assert rendered == 'page=3'
|
||||
|
||||
|
||||
def test_urlreplace_add_parameter():
|
||||
factory = RequestFactory()
|
||||
request = factory.get('/customer/details?foo=bar')
|
||||
rendered = TEMPLATE_REPLACE_PAGE.render(Context({
|
||||
'request': request
|
||||
})).strip()
|
||||
assert rendered in ('foo=bar&page=3', 'page=3&foo=bar')
|
||||
|
||||
|
||||
def test_urlreplace_replace_parameter():
|
||||
factory = RequestFactory()
|
||||
request = factory.get('/customer/details?page=15')
|
||||
rendered = TEMPLATE_REPLACE_PAGE.render(Context({
|
||||
'request': request
|
||||
})).strip()
|
||||
assert rendered == 'page=3'
|
||||
Reference in New Issue
Block a user