From 2b50e446109cc172db8ae9618d9a41078a2d0537 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 3 Jul 2015 23:35:44 +0200 Subject: [PATCH] Added basic tests for the orders view --- src/tests/control/test_orders.py | 83 ++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/tests/control/test_orders.py diff --git a/src/tests/control/test_orders.py b/src/tests/control/test_orders.py new file mode 100644 index 0000000000..d8ac759835 --- /dev/null +++ b/src/tests/control/test_orders.py @@ -0,0 +1,83 @@ +from datetime import timedelta +from decimal import Decimal + +from django.utils.timezone import now +import pytest +from pretix.base.models import Event, Organizer, User, EventPermission, Order, OrganizerPermission, Item, OrderPosition + + +@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' + ) + user = User.objects.create_user('dummy@dummy.dummy', 'dummy@dummy.dummy', 'dummy') + EventPermission.objects.create( + event=event, + user=user, + can_view_orders=True, + can_change_orders=True + ) + o = Order.objects.create( + code='FOO', event=event, + user=user, status=Order.STATUS_PENDING, + datetime=now(), expires=now() + timedelta(days=10), + total=0, payment_provider='banktransfer' + ) + ticket = Item.objects.create(event=event, name='Early-bird ticket', + category=None, default_price=23, + admission=True) + event.settings.set('attendee_names_asked', True) + OrderPosition.objects.create( + order=o, + item=ticket, + variation=None, + price=Decimal("14"), + attendee_name="Peter" + ) + return event, user, o + + +@pytest.mark.django_db +def test_order_list(client, env): + client.login(identifier='dummy@dummy.dummy', password='dummy') + response = client.get('/control/event/dummy/dummy/orders/') + assert 'FOO' in response.rendered_content + response = client.get('/control/event/dummy/dummy/orders/?user=peter') + assert 'FOO' not in response.rendered_content + response = client.get('/control/event/dummy/dummy/orders/?user=dummy') + assert 'FOO' in response.rendered_content + response = client.get('/control/event/dummy/dummy/orders/?status=p') + assert 'FOO' not in response.rendered_content + response = client.get('/control/event/dummy/dummy/orders/?status=n') + assert 'FOO' in response.rendered_content + + +@pytest.mark.django_db +def test_order_detail(client, env): + client.login(identifier='dummy@dummy.dummy', password='dummy') + response = client.get('/control/event/dummy/dummy/orders/FOO/') + assert 'Early-bird' in response.rendered_content + assert 'Peter' in response.rendered_content + + +@pytest.mark.django_db +def test_order_transition_cancel(client, env): + client.login(identifier='dummy@dummy.dummy', password='dummy') + client.post('/control/event/dummy/dummy/orders/FOO/transition', { + 'status': 'c' + }) + o = Order.objects.current.get(identity=env[2].identity) + assert o.status == Order.STATUS_CANCELLED + + +@pytest.mark.django_db +def test_order_transition_to_paid_success(client, env): + client.login(identifier='dummy@dummy.dummy', password='dummy') + client.post('/control/event/dummy/dummy/orders/FOO/transition', { + 'status': 'p' + }) + o = Order.objects.current.get(identity=env[2].identity) + assert o.status == Order.STATUS_PAID