forked from CGM_Public/pretix_original
Add waiting list
This commit is contained in:
@@ -67,6 +67,8 @@ event_urls = [
|
||||
"orders/ABC/contact",
|
||||
"orders/ABC/",
|
||||
"orders/",
|
||||
"waitinglist/",
|
||||
"waitinglist/auto_assign",
|
||||
"invoice/1",
|
||||
]
|
||||
|
||||
@@ -154,6 +156,8 @@ event_permission_urls = [
|
||||
("can_view_vouchers", "vouchers/tags/", 200),
|
||||
("can_change_vouchers", "vouchers/1234/", 404),
|
||||
("can_change_vouchers", "vouchers/1234/delete", 404),
|
||||
("can_view_orders", "waitinglist/", 200),
|
||||
("can_change_orders", "waitinglist/auto_assign", 405),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -123,6 +123,8 @@ def logged_in_client(client, event):
|
||||
('/control/event/{orga}/{event}/orders/export/', 200),
|
||||
('/control/event/{orga}/{event}/orders/go', 302),
|
||||
('/control/event/{orga}/{event}/orders/', 200),
|
||||
('/control/event/{orga}/{event}/waitinglist/', 200),
|
||||
('/control/event/{orga}/{event}/waitinglist/auto_assign', 405),
|
||||
])
|
||||
@pytest.mark.django_db
|
||||
def test_one_view(logged_in_client, url, expected, event, item, item_category, order, question, quota, voucher):
|
||||
|
||||
87
src/tests/control/test_waitinglist.py
Normal file
87
src/tests/control/test_waitinglist.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import pytest
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import (
|
||||
Event, EventPermission, Item, Organizer, Quota, User, Voucher,
|
||||
WaitingListEntry,
|
||||
)
|
||||
from pretix.control.views.dashboards import waitinglist_widgets
|
||||
|
||||
|
||||
@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='pretix.plugins.banktransfer,tests.testdummy'
|
||||
)
|
||||
event.settings.set('ticketoutput_testdummy__enabled', True)
|
||||
user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
|
||||
item1 = Item.objects.create(event=event, name="Ticket", default_price=23,
|
||||
admission=True)
|
||||
item2 = Item.objects.create(event=event, name="Ticket", default_price=23,
|
||||
admission=True)
|
||||
|
||||
for i in range(5):
|
||||
WaitingListEntry.objects.create(
|
||||
event=event, item=item1, email='foo{}@bar.com'.format(i)
|
||||
)
|
||||
v = Voucher.objects.create(item=item1, event=event, block_quota=True, redeemed=1)
|
||||
WaitingListEntry.objects.create(
|
||||
event=event, item=item1, email='success@example.org', voucher=v
|
||||
)
|
||||
WaitingListEntry.objects.create(
|
||||
event=event, item=item2, email='item2@example.org'
|
||||
)
|
||||
|
||||
EventPermission.objects.create(
|
||||
event=event,
|
||||
user=user,
|
||||
can_view_orders=True,
|
||||
can_change_orders=True
|
||||
)
|
||||
return event, user, o, item1
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_list(client, env):
|
||||
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
|
||||
response = client.get('/control/event/dummy/dummy/waitinglist/')
|
||||
assert 'success@example.org' not in response.rendered_content
|
||||
assert 'item2@example.org' in response.rendered_content
|
||||
assert 'foo0@bar.com' in response.rendered_content
|
||||
assert response.context['estimate'] == 23 * 6
|
||||
|
||||
response = client.get('/control/event/dummy/dummy/waitinglist/?status=a')
|
||||
assert 'success@example.org' in response.rendered_content
|
||||
assert 'foo0@bar.com' in response.rendered_content
|
||||
|
||||
response = client.get('/control/event/dummy/dummy/waitinglist/?status=s')
|
||||
assert 'success@example.org' in response.rendered_content
|
||||
assert 'foo0@bar.com' not in response.rendered_content
|
||||
|
||||
response = client.get('/control/event/dummy/dummy/waitinglist/?item=%d' % env[3].pk)
|
||||
assert 'item2@example.org' not in response.rendered_content
|
||||
assert 'foo0@bar.com' in response.rendered_content
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_assign_single(client, env):
|
||||
client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
wle = WaitingListEntry.objects.filter(voucher__isnull=True).last()
|
||||
|
||||
client.post('/control/event/dummy/dummy/waitinglist/', {
|
||||
'assign': wle.pk
|
||||
})
|
||||
wle.refresh_from_db()
|
||||
assert wle.voucher
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_dashboard(client, env):
|
||||
quota = Quota.objects.create(name="Test", size=2, event=env[0])
|
||||
quota.items.add(env[3])
|
||||
w = waitinglist_widgets(env[0])
|
||||
assert '3' in w[0]['content']
|
||||
assert '7' in w[1]['content']
|
||||
Reference in New Issue
Block a user