def test_raise_if_has_payment(self):
     booking = booking_factories.UsedIndividualBookingFactory()
     payments_factories.PaymentFactory(booking=booking)
     with pytest.raises(api_errors.ResourceGoneError):
         api.mark_as_unused(booking)
     assert booking.isUsed  # unchanged
     assert booking.status is BookingStatus.USED
 def test_raise_if_booking_was_automatically_used_for_digital_offer_with_activation_code(self):
     offer = offers_factories.OfferFactory(product=offers_factories.DigitalProductFactory())
     digital_stock = offers_factories.StockWithActivationCodesFactory()
     first_activation_code = digital_stock.activationCodes[0]
     booking = booking_factories.UsedIndividualBookingFactory(
         stock__offer=offer, activationCode=first_activation_code
     )
     with pytest.raises(api_errors.ForbiddenError):
         api.mark_as_unused(booking)
     assert booking.isUsed
     assert booking.status is BookingStatus.USED
Beispiel #3
0
def patch_booking_keep_by_token(token: str):
    """Let a pro user mark a booking as _not_ used."""
    booking = booking_repository.find_by(token=token.upper())
    offerer_id = booking.stock.offer.venue.managingOffererId
    valid_api_key = _get_api_key_from_header(request)

    if current_user.is_authenticated:
        check_user_can_validate_bookings_v2(current_user, offerer_id)

    if valid_api_key:
        check_api_key_allows_to_validate_booking(valid_api_key, offerer_id)

    bookings_api.mark_as_unused(booking)

    return "", 204
def patch_booking_keep_by_token(token: str) -> None:
    # in French, to be used by Swagger for the API documentation
    """Annulation de la validation d'une réservation."""
    booking = booking_repository.find_by(token=token)

    if current_user.is_authenticated:
        check_user_can_validate_bookings_v2(current_user, booking.offererId)

    if current_api_key:
        check_api_key_allows_to_validate_booking(
            current_api_key,  # type: ignore[arg-type]
            booking.offererId,
        )

    bookings_api.mark_as_unused(booking)
 def test_raise_if_not_yet_used(self):
     booking = booking_factories.IndividualBookingFactory(isUsed=False)
     with pytest.raises(api_errors.ResourceGoneError):
         api.mark_as_unused(booking)
     assert not booking.isUsed  # unchanged
     assert booking.status is not BookingStatus.USED
 def test_mark_as_unused_digital_offer(self):
     offer = offers_factories.OfferFactory(product=offers_factories.DigitalProductFactory())
     booking = booking_factories.UsedIndividualBookingFactory(stock__offer=offer)
     api.mark_as_unused(booking)
     assert not booking.isUsed
     assert booking.status is not BookingStatus.USED
 def test_mark_as_unused(self):
     booking = booking_factories.UsedIndividualBookingFactory()
     api.mark_as_unused(booking)
     assert not booking.isUsed
     assert booking.status is not BookingStatus.USED
     assert len(push_testing.requests) == 1
Beispiel #8
0
 def test_raise_if_has_payment(self):
     booking = factories.BookingFactory(isUsed=True)
     payments_factories.PaymentFactory(booking=booking)
     with pytest.raises(api_errors.ResourceGoneError):
         api.mark_as_unused(booking)
     assert booking.isUsed  # unchanged
Beispiel #9
0
 def test_raise_if_cancelled(self):
     booking = factories.BookingFactory(isUsed=True, isCancelled=True)
     with pytest.raises(api_errors.ForbiddenError):
         api.mark_as_unused(booking)
     assert booking.isUsed  # unchanged
Beispiel #10
0
 def test_raise_if_not_yet_used(self):
     booking = factories.BookingFactory(isUsed=False)
     with pytest.raises(api_errors.ResourceGoneError):
         api.mark_as_unused(booking)
     assert not booking.isUsed  # unchanged
Beispiel #11
0
 def test_mark_as_unused(self):
     booking = factories.BookingFactory(isUsed=True)
     api.mark_as_unused(booking)
     assert not booking.isUsed
Beispiel #12
0
def _invalidate_bookings(bookings: list[Booking]) -> list[Booking]:
    for booking in bookings:
        if booking.isUsed:
            mark_as_unused(booking)
    return bookings