|
3 | 3 |
|
4 | 4 | from app.settings import get_settings |
5 | 5 | from app import current_app as app, db |
6 | | -from app.api.helpers.db import save_to_db |
7 | 6 | from app.api.helpers.order import set_expiry_for_order, delete_related_attendees_for_order |
8 | | -from app.factories.attendee import AttendeeFactory |
| 7 | +import app.factories.common as common |
| 8 | +from app.factories.attendee import AttendeeFactoryBase, AttendeeFactory |
9 | 9 | from app.factories.event import EventFactoryBasic |
| 10 | +from app.factories.ticket import TicketFactory |
10 | 11 | from app.factories.order import OrderFactory |
11 | 12 | from app.models.order import Order |
12 | 13 | from app.api.helpers.db import save_to_db |
| 14 | +from app.api.attendees import get_sold_and_reserved_tickets_count |
13 | 15 | from tests.all.integration.setup_database import Setup |
14 | 16 | from tests.all.integration.utils import OpenEventTestCase |
15 | 17 |
|
@@ -54,6 +56,42 @@ def test_should_delete_related_attendees(self): |
54 | 56 | order = db.session.query(Order).filter(Order.id == obj.id).first() |
55 | 57 | self.assertEqual(len(order.ticket_holders), 0) |
56 | 58 |
|
| 59 | + def test_count_sold_and_reserved_tickets(self): |
| 60 | + """Method to test the count query of sold tickets""" |
| 61 | + |
| 62 | + with app.test_request_context(): |
| 63 | + ticket = TicketFactory() |
| 64 | + |
| 65 | + completed_order = OrderFactory(status='completed') |
| 66 | + placed_order = OrderFactory(status='placed') |
| 67 | + initializing_order = OrderFactory(status='initializing', |
| 68 | + created_at=datetime.utcnow() - timedelta(minutes=5)) |
| 69 | + pending_order = OrderFactory(status='pending', |
| 70 | + created_at=datetime.utcnow() - timedelta(minutes=35)) |
| 71 | + expired_time_order = OrderFactory(status='initializing', created_at=common.date_) |
| 72 | + expired_order = OrderFactory(status='expired') |
| 73 | + |
| 74 | + db.session.commit() |
| 75 | + |
| 76 | + # will not be counted as they have no order_id |
| 77 | + AttendeeFactoryBase.create_batch(2) |
| 78 | + # will be counted as attendee have valid orders |
| 79 | + AttendeeFactoryBase.create_batch(6, order_id=completed_order.id) |
| 80 | + # will be counted as attendee has valid placed order |
| 81 | + AttendeeFactoryBase(order_id=placed_order.id) |
| 82 | + # will be counted as attendee has initializing order under order expiry time |
| 83 | + AttendeeFactoryBase.create_batch(4, order_id=initializing_order.id) |
| 84 | + # will be counted as attendee has pending order under 30+order expiry time |
| 85 | + AttendeeFactoryBase.create_batch(2, order_id=pending_order.id) |
| 86 | + # will not be counted as the order is not under order expiry time |
| 87 | + AttendeeFactoryBase.create_batch(3, order_id=expired_time_order.id) |
| 88 | + # will not be counted as the order has an expired state |
| 89 | + AttendeeFactoryBase.create_batch(5, order_id=expired_order.id) |
| 90 | + |
| 91 | + count = get_sold_and_reserved_tickets_count(ticket.event_id) |
| 92 | + |
| 93 | + self.assertEqual(count, 13) |
| 94 | + |
57 | 95 |
|
58 | 96 | if __name__ == '__main__': |
59 | 97 | unittest.main() |
0 commit comments