def test_reject_deleted_attendees(db): attendees = AttendeeSubFactory.create_batch(3) attendees += AttendeeSubFactory.create_batch(2, deleted_at=datetime.now()) db.session.commit() with pytest.raises(ObjectNotFound, match='Some attendee among ids .* do not exist'): validate_ticket_holders([att.id for att in attendees])
def _create_discounted_attendees(db): discount, tickets = _create_discount_code(db) order_with_discount = OrderSubFactory(status='completed', discount_code=discount) AttendeeSubFactory.create_batch(3, order=order_with_discount, ticket_id=tickets[0]['id']) db.session.commit() return discount, tickets
def test_reject_attendees_with_order(db): attendees = AttendeeSubFactory.create_batch(2) attendees.append(AttendeeSubFactory(order=OrderSubFactory())) db.session.commit() with pytest.raises( ConflictError, match= f'Order already exists for attendee with id {attendees[-1].id}', ): validate_ticket_holders([att.id for att in attendees])
def test_expire_initializing_tickets(db): order_expiry_time = get_settings()['order_expiry_time'] order_old = OrderSubFactory( created_at=datetime.datetime.now(timezone.utc) - timedelta(minutes=order_expiry_time)) AttendeeSubFactory.create_batch(3, order=order_old) order_new = OrderSubFactory() AttendeeSubFactory.create_batch(2, order=order_new) db.session.commit() expire_initializing_tickets() assert order_old.status == 'expired' assert len(order_old.ticket_holders) == 0 assert order_new.status == 'initializing' assert len(order_new.ticket_holders) == 2
def test_ignore_on_order_attendee_update(client, db, user, jwt): order_id = create_order(db, user) attendee = AttendeeSubFactory() db.session.commit() data = json.dumps({ 'data': { 'type': 'order', 'id': order_id, "relationships": { "attendees": { "data": [{ "id": str(attendee.id), "type": "attendee" }] } }, } }) response = client.patch( f'/v1/orders/{order_id}', content_type='application/vnd.api+json', headers=jwt, data=data, ) order = Order.query.get(order_id) assert response.status_code == 200 assert len(order.ticket_holders) == 3
def test_order_get(client, db, user, jwt): user1 = UserFactory(is_admin=False) order_id = create_order(db, user1) order = Order.query.get(order_id) attendee = AttendeeSubFactory(order=order, email=user.email) db.session.commit() response = client.get( f'/v1/orders/{order_id}?include=user', content_type='application/vnd.api+json', headers=jwt, ) assert response.status_code == 200 assert json.loads( response.data)['data']['relationships']['user']['data'] == None response = client.get( f'/v1/attendees/{attendee.id}?include=order.user', content_type='application/vnd.api+json', headers=jwt, ) assert response.status_code == 200 assert (json.loads( response.data)['included'][0]['relationships']['user']['data'] == None)
def test_delete_ticket_holders_with_no_order_id(db): """Method to test deleting ticket holders with no order id after expiry time""" attendee = AttendeeSubFactory(created_at=common.date_) db.session.commit() attendee_id = attendee.id delete_ticket_holders_no_order_id() ticket_holder = TicketHolder.query.get(attendee_id) assert ticket_holder == None
def test_expire_pending_tickets(db): order_old = OrderSubFactory( status='pending', created_at=datetime.datetime.now(timezone.utc) - timedelta(minutes=45), ) AttendeeSubFactory.create_batch(3, order=order_old) order_new = OrderSubFactory( status='pending', created_at=datetime.datetime.now(timezone.utc) - timedelta(minutes=15), ) AttendeeSubFactory.create_batch(2, order=order_new) db.session.commit() expire_pending_tickets() assert order_old.status == 'expired' assert len(order_old.ticket_holders) == 3 assert order_new.status == 'pending' assert len(order_new.ticket_holders) == 2
def test_delete_ticket_holder_created_currently(db): """Method to test not deleting ticket holders with no order id but created within expiry time""" attendee = AttendeeSubFactory( created_at=datetime.datetime.utcnow(), modified_at=datetime.datetime.utcnow(), ) db.session.commit() attendee_id = attendee.id delete_ticket_holders_no_order_id() ticket_holder = TicketHolder.query.get(attendee_id) assert ticket_holder != None
def test_should_delete_related_attendees(self): """Method to test to delete related attendees of an event""" with self.app.test_request_context(): attendee = AttendeeSubFactory() obj = OrderFactory(event_id=attendee.event_id) obj.ticket_holders = [ attendee, ] save_to_db(obj) delete_related_attendees_for_order(obj) order = db.session.query(Order).filter(Order.id == obj.id).first() assert len(order.ticket_holders) == 0
def test_send_monthly_invoice(db): """Method to test monthly invoices""" TicketFeesFactory(service_fee=10.23, maximum_fee=11) test_order = OrderSubFactory( status='completed', event__state='published', completed_at=datetime.datetime.now() - datetime.timedelta(days=30), amount=100, ) AttendeeSubFactory(event=test_order.event, order=test_order) db.session.commit() send_monthly_event_invoice() event_invoice = test_order.event.invoices[0] assert event_invoice.amount == 10.23
def test_send_monthly_invoice(db): """Method to test monthly invoices""" TicketFeesFactory(service_fee=10.23, maximum_fee=11, country='global') test_order = OrderSubFactory( status='completed', event__state='published', completed_at=monthdelta(this_month_date(), -1), amount=100, ) role, _ = get_or_create(Role, name='owner', title_name='Owner') UsersEventsRoles(user=UserFactory(), event=test_order.event, role=role) AttendeeSubFactory(event=test_order.event, order=test_order) db.session.commit() send_monthly_event_invoice() event_invoice = test_order.event.invoices[0] assert event_invoice.amount == 10.23
def get_complex_custom_form_order(db, user): order = OrderSubFactory(amount=234, status='initializing', user=user) attendee = AttendeeSubFactory(order=order) CustomForms( event=attendee.event, form='attendee', field_identifier='whatUniversity', name='what university', type='text', is_complex=True, is_included=True, is_required=True, ) CustomForms( event=attendee.event, form='attendee', field_identifier='whatCollege', name='what college', type='text', is_complex=True, is_included=True, is_required=True, ) CustomForms( event=attendee.event, form='attendee', field_identifier='naamBatao', name='naam batao', type='text', is_complex=True, is_included=True, is_required=False, ) db.session.commit() return str(order.id)
def test_get_count(db): """Method to test the number of queries concerning a Model""" attendee = AttendeeSubFactory() save_to_db(attendee) assert get_count(TicketHolder.query) == 1
def create_order(db, user): order = OrderSubFactory(amount=234, status='initializing', user=user) AttendeeSubFactory.create_batch(3, order=order) db.session.commit() return str(order.id)
def test_validate_ticket_holders(db): attendees = AttendeeSubFactory.create_batch(3, event=EventFactoryBasic()) db.session.commit() assert attendees == validate_ticket_holders( [str(att.id) for att in attendees])