Example #1
0
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
Example #3
0
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
Example #5
0
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
Example #6
0
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
Example #10
0
    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
Example #12
0
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
Example #13
0
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)
Example #14
0
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
Example #15
0
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)
Example #16
0
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])