Beispiel #1
0
    def test_revoke_tickets(self):
        tickets_before = ticket_creation_service \
            .create_tickets(self.category_id, self.owner_id, 3)

        for ticket_before in tickets_before:
            assert not ticket_before.revoked

            events_before = event_service.get_events_for_ticket(
                ticket_before.id)
            assert len(events_before) == 0

        # -------------------------------- #

        ticket_ids = {ticket.id for ticket in tickets_before}

        ticket_revocation_service.revoke_tickets(ticket_ids, self.admin_id)

        # -------------------------------- #

        tickets_after = ticket_service.find_tickets(ticket_ids)
        for ticket_after in tickets_after:
            assert ticket_after.revoked

            events_after = event_service.get_events_for_ticket(ticket_after.id)
            assert len(events_after) == 1

            ticket_revoked_event = events_after[0]
            assert ticket_revoked_event.event_type == 'ticket-revoked'
            assert ticket_revoked_event.data == {
                'initiator_id': str(self.admin_id),
            }
Beispiel #2
0
    def test_check_in_user(self):
        ticket_before = ticket_service.create_ticket(self.category_id, self.owner_id)

        ticket_before.used_by_id = self.user_id
        self.db.session.commit()

        assert not ticket_before.user_checked_in

        events_before = event_service.get_events_for_ticket(ticket_before.id)
        assert len(events_before) == 0

        # -------------------------------- #

        ticket_id = ticket_before.id

        ticket_service.check_in_user(ticket_id, self.orga_id)

        # -------------------------------- #

        ticket_after = ticket_service.find_ticket(ticket_id)
        assert ticket_before.user_checked_in

        events_after = event_service.get_events_for_ticket(ticket_after.id)
        assert len(events_after) == 1

        ticket_revoked_event = events_after[0]
        assert ticket_revoked_event.event_type == 'user-checked-in'
        assert ticket_revoked_event.data == {
            'checked_in_user_id': str(self.user_id),
            'initiator_id': str(self.orga_id),
        }
Beispiel #3
0
    def test_revoke_ticket_with_seat(self):
        area = seating_area_service.create_area(self.party.id, 'main', 'Main')
        seat = seat_service.create_seat(area, 0, 0, self.category_id)

        ticket = ticket_creation_service \
            .create_ticket(self.category_id, self.owner_id)

        ticket_seat_management_service \
            .occupy_seat(ticket.id, seat.id, self.owner_id)

        assert ticket.occupied_seat_id == seat.id

        events_before = event_service.get_events_for_ticket(ticket.id)
        event_types_before = {event.event_type for event in events_before}
        assert 'seat-released' not in event_types_before

        # -------------------------------- #

        ticket_revocation_service.revoke_ticket(ticket.id, self.admin_id)

        # -------------------------------- #

        assert ticket.occupied_seat_id is None

        events_after = event_service.get_events_for_ticket(ticket.id)
        event_types_after = {event.event_type for event in events_after}
        assert 'seat-released' in event_types_after
Beispiel #4
0
    def test_revoke_ticket(self):
        ticket_before = ticket_service.create_ticket(self.category_id,
                                                     self.owner_id)
        assert not ticket_before.revoked

        events_before = event_service.get_events_for_ticket(ticket_before.id)
        assert len(events_before) == 0

        # -------------------------------- #

        ticket_id = ticket_before.id

        ticket_service.revoke_ticket(ticket_id)

        # -------------------------------- #

        ticket_after = ticket_service.find_ticket(ticket_id)
        assert ticket_after.revoked

        events_after = event_service.get_events_for_ticket(ticket_after.id)
        assert len(events_after) == 1

        ticket_revoked_event = events_after[0]
        assert ticket_revoked_event.event_type == 'ticket-revoked'
        assert ticket_revoked_event.data == {}
Beispiel #5
0
    def test_revoke_bundle(self):
        tickets_before = bundle_service.find_tickets_for_bundle(self.bundle_id)
        assert len(tickets_before) == self.quantity

        for ticket_before in tickets_before:
            assert not ticket_before.revoked

            events_before = event_service.get_events_for_ticket(ticket_before.id)
            assert len(events_before) == 0

        # -------------------------------- #

        bundle_service.revoke_bundle(self.bundle_id)

        # -------------------------------- #

        tickets_after = bundle_service.find_tickets_for_bundle(self.bundle_id)
        assert len(tickets_after) == self.quantity

        for ticket_after in tickets_after:
            assert ticket_after.revoked

            events_after = event_service.get_events_for_ticket(ticket_after.id)
            assert len(events_after) == 1

            ticket_revoked_event = events_after[0]
            assert ticket_revoked_event.event_type == 'ticket-revoked'
            assert ticket_revoked_event.data == {}
Beispiel #6
0
    def test_appoint_and_withdraw_user(self):
        user = self.create_user('Ticket_User')

        assert self.ticket.used_by_id is None

        # appoint user

        ticket_service.appoint_user(self.ticket.id, user.id, self.owner.id)
        assert self.ticket.used_by_id == user.id

        events_after_appointment = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_appointment) == 1

        appointment_event = events_after_appointment[0]
        assert appointment_event.event_type == 'user-appointed'
        assert appointment_event.data == {
            'appointed_user_id': str(user.id),
            'initiator_id': str(self.owner.id),
        }

        # withdraw user

        ticket_service.withdraw_user(self.ticket.id, self.owner.id)
        assert self.ticket.used_by_id is None

        events_after_withdrawal = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_withdrawal) == 2

        withdrawal_event = events_after_withdrawal[1]
        assert withdrawal_event.event_type == 'user-withdrawn'
        assert withdrawal_event.data == {
            'initiator_id': str(self.owner.id),
        }
    def test_occupy_and_release_seat(self):
        area = self.create_area('main', 'Main Hall')
        seat1 = seat_service.create_seat(area, 0, 1, self.category_id)
        seat2 = seat_service.create_seat(area, 0, 2, self.category_id)

        assert self.ticket.occupied_seat_id is None

        # occupy seat

        ticket_seat_management_service \
            .occupy_seat(self.ticket.id, seat1.id, self.owner.id)
        assert self.ticket.occupied_seat_id == seat1.id

        events_after_occupation = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_occupation) == 1

        occupation_event = events_after_occupation[0]
        assert_event(occupation_event, 'seat-occupied', {
            'seat_id': str(seat1.id),
            'initiator_id': str(self.owner.id),
        })

        # switch to another seat

        ticket_seat_management_service \
            .occupy_seat(self.ticket.id, seat2.id, self.owner.id)
        assert self.ticket.occupied_seat_id == seat2.id

        events_after_switch = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_switch) == 2

        switch_event = events_after_switch[1]
        assert_event(
            switch_event, 'seat-occupied', {
                'previous_seat_id': str(seat1.id),
                'seat_id': str(seat2.id),
                'initiator_id': str(self.owner.id),
            })

        # release seat

        ticket_seat_management_service \
            .release_seat(self.ticket.id, self.owner.id)
        assert self.ticket.occupied_seat_id is None

        events_after_release = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_release) == 3

        release_event = events_after_release[2]
        assert_event(release_event, 'seat-released', {
            'seat_id': str(seat2.id),
            'initiator_id': str(self.owner.id),
        })
Beispiel #8
0
    def test_revoke_tickets_with_seats(self):
        area = seating_area_service.create_area(self.party.id, 'main', 'Main')

        tickets = ticket_creation_service.create_tickets(
            self.category_id, self.owner_id, 2)

        ticket_ids = {ticket.id for ticket in tickets}

        for ticket in tickets:
            seat = seat_service.create_seat(area, 0, 0, self.category_id)

            ticket_seat_management_service.occupy_seat(ticket.id, seat.id,
                                                       self.owner_id)

            assert ticket.occupied_seat_id == seat.id

        # -------------------------------- #

        ticket_revocation_service.revoke_tickets(ticket_ids, self.admin_id)

        # -------------------------------- #

        for ticket in tickets:
            assert ticket.occupied_seat_id is None

            events_after = event_service.get_events_for_ticket(ticket.id)
            event_types_after = {event.event_type for event in events_after}
            assert 'seat-released' in event_types_after
    def test_appoint_and_withdraw_seat_manager(self):
        manager = create_user('Ticket_Manager')

        assert self.ticket.seat_managed_by_id is None

        # appoint seat manager

        ticket_seat_management_service.appoint_seat_manager(
            self.ticket.id, manager.id, self.owner.id
        )
        assert self.ticket.seat_managed_by_id == manager.id

        events_after_appointment = event_service.get_events_for_ticket(
            self.ticket.id
        )
        assert len(events_after_appointment) == 1

        appointment_event = events_after_appointment[0]
        assert_event(
            appointment_event,
            'seat-manager-appointed',
            {
                'appointed_seat_manager_id': str(manager.id),
                'initiator_id': str(self.owner.id),
            },
        )

        # withdraw seat manager

        ticket_seat_management_service.withdraw_seat_manager(
            self.ticket.id, self.owner.id
        )
        assert self.ticket.seat_managed_by_id is None

        events_after_withdrawal = event_service.get_events_for_ticket(
            self.ticket.id
        )
        assert len(events_after_withdrawal) == 2

        withdrawal_event = events_after_withdrawal[1]
        assert_event(
            withdrawal_event,
            'seat-manager-withdrawn',
            {'initiator_id': str(self.owner.id)},
        )
Beispiel #10
0
def test_revoke_bundle(admin_app_with_db, normal_user, admin_user):
    brand = create_brand()
    party = create_party(brand_id=brand.id)

    quantity = 4
    owner = normal_user

    bundle = create_bundle(party.id, quantity, owner)

    tickets_before = bundle_service.find_tickets_for_bundle(bundle.id)
    assert len(tickets_before) == quantity

    for ticket_before in tickets_before:
        assert not ticket_before.revoked

        events_before = event_service.get_events_for_ticket(ticket_before.id)
        assert len(events_before) == 0

    # -------------------------------- #

    bundle_service.revoke_bundle(bundle.id, admin_user.id)

    # -------------------------------- #

    tickets_after = bundle_service.find_tickets_for_bundle(bundle.id)
    assert len(tickets_after) == quantity

    for ticket_after in tickets_after:
        assert ticket_after.revoked

        events_after = event_service.get_events_for_ticket(ticket_after.id)
        assert len(events_after) == 1

        ticket_revoked_event = events_after[0]
        assert ticket_revoked_event.event_type == 'ticket-revoked'
        assert ticket_revoked_event.data == {
            'initiator_id': str(admin_user.id),
        }
    def test_appoint_and_withdraw_user(self):
        user = create_user('Ticket_User')

        assert self.ticket.used_by_id is None

        # appoint user

        ticket_user_management_service \
            .appoint_user(self.ticket.id, user.id, self.owner.id)
        assert self.ticket.used_by_id == user.id

        events_after_appointment = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_appointment) == 1

        appointment_event = events_after_appointment[0]
        assert_event(
            appointment_event, 'user-appointed', {
                'appointed_user_id': str(user.id),
                'initiator_id': str(self.owner.id),
            })

        # withdraw user

        ticket_user_management_service \
            .withdraw_user(self.ticket.id, self.owner.id)
        assert self.ticket.used_by_id is None

        events_after_withdrawal = event_service.get_events_for_ticket(
            self.ticket.id)
        assert len(events_after_withdrawal) == 2

        withdrawal_event = events_after_withdrawal[1]
        assert_event(withdrawal_event, 'user-withdrawn', {
            'initiator_id': str(self.owner.id),
        })