mirror of
https://github.com/pretix/pretix.git
synced 2026-05-03 14:54:04 +00:00
Fix annotated check-in list query
This commit is contained in:
@@ -13,8 +13,9 @@ from django.test import TestCase
|
||||
from django.utils.timezone import now
|
||||
|
||||
from pretix.base.models import (
|
||||
CachedFile, CartPosition, Event, Item, ItemCategory, ItemVariation, Order,
|
||||
OrderPosition, Organizer, Question, Quota, User, Voucher, WaitingListEntry,
|
||||
CachedFile, CartPosition, CheckinList, Event, Item, ItemCategory,
|
||||
ItemVariation, Order, OrderPosition, Organizer, Question, Quota, User,
|
||||
Voucher, WaitingListEntry,
|
||||
)
|
||||
from pretix.base.models.event import SubEvent
|
||||
from pretix.base.models.items import SubEventItem, SubEventItemVariation
|
||||
@@ -1066,3 +1067,66 @@ class CachedFileTestCase(TestCase):
|
||||
assert f.read().strip() == "file_content"
|
||||
cf.delete()
|
||||
assert not default_storage.exists(cf.file.name)
|
||||
|
||||
|
||||
class CheckinListTestCase(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.organizer = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
cls.event = Event.objects.create(
|
||||
organizer=cls.organizer, name='Dummy', slug='dummy',
|
||||
date_from=now(), date_to=now() - timedelta(hours=1),
|
||||
)
|
||||
cls.item1 = cls.event.items.create(name="Ticket", default_price=12)
|
||||
cls.item2 = cls.event.items.create(name="Shirt", default_price=6)
|
||||
cls.cl_all = cls.event.checkin_lists.create(
|
||||
name='All', all_products=True
|
||||
)
|
||||
cls.cl_both = cls.event.checkin_lists.create(
|
||||
name='Both', all_products=False
|
||||
)
|
||||
cls.cl_both.limit_products.add(cls.item1)
|
||||
cls.cl_both.limit_products.add(cls.item2)
|
||||
cls.cl_tickets = cls.event.checkin_lists.create(
|
||||
name='Tickets', all_products=False
|
||||
)
|
||||
cls.cl_tickets.limit_products.add(cls.item1)
|
||||
o = Order.objects.create(
|
||||
code='FOO', event=cls.event, email='dummy@dummy.test',
|
||||
status=Order.STATUS_PAID,
|
||||
datetime=now(), expires=now() + timedelta(days=10),
|
||||
total=Decimal("30"), payment_provider='banktransfer', locale='en'
|
||||
)
|
||||
OrderPosition.objects.create(
|
||||
order=o,
|
||||
item=cls.item1,
|
||||
variation=None,
|
||||
price=Decimal("12"),
|
||||
)
|
||||
op2 = OrderPosition.objects.create(
|
||||
order=o,
|
||||
item=cls.item1,
|
||||
variation=None,
|
||||
price=Decimal("12"),
|
||||
)
|
||||
op3 = OrderPosition.objects.create(
|
||||
order=o,
|
||||
item=cls.item2,
|
||||
variation=None,
|
||||
price=Decimal("6"),
|
||||
)
|
||||
op2.checkins.create(list=cls.cl_tickets)
|
||||
op3.checkins.create(list=cls.cl_both)
|
||||
|
||||
def test_annotated(self):
|
||||
lists = list(CheckinList.annotate_with_numbers(self.event.checkin_lists.order_by('name'), self.event))
|
||||
assert lists == [self.cl_all, self.cl_both, self.cl_tickets]
|
||||
assert lists[0].checkin_count == 0
|
||||
assert lists[0].position_count == 3
|
||||
assert lists[0].percent == 0
|
||||
assert lists[1].checkin_count == 1
|
||||
assert lists[1].position_count == 3
|
||||
assert lists[1].percent == 33
|
||||
assert lists[2].checkin_count == 1
|
||||
assert lists[2].position_count == 2
|
||||
assert lists[2].percent == 50
|
||||
|
||||
Reference in New Issue
Block a user