def test_a_digital_booking_expires_after_30_days(self):
        # Given
        booking = make_booking(
            quantity=10,
            stock__price=0,
            stock__offer__product__subcategoryId=subcategories.VOD.id,
            stock__offer__product__url="http://example.com",
            stock__offer__name="Super offre numérique",
        )

        # When
        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        # Then
        expected = get_expected_base_email_data(
            booking,
            date="",
            heure="",
            is_event=0,
            prix="Gratuit",
            nom_offre="Super offre numérique",
            offer_type="VOD",
            quantity=10,
            can_expire=0,
            must_use_token_for_payment=0,
        )
        assert email_data == expected
def test_with_book():
    booking = make_booking(
        stock__offer__name="Le récit de voyage",
        stock__offer__product__extraData={"isbn": "123456789"},
        stock__offer__product__name="Le récit de voyage",
        stock__offer__product__type=str(models.ThingType.LIVRE_EDITION),
        stock__offer__venue__address=None,
        stock__offer__venue__city=None,
        stock__offer__venue__departementCode=None,
        stock__offer__venue__isVirtual=True,
        stock__offer__venue__postalCode=None,
        stock__offer__venue__siret=None,
    )

    email_data = retrieve_data_for_offerer_booking_recap_email(booking)

    expected = get_expected_base_email_data(
        booking,
        date="",
        departement="numérique",
        heure="",
        is_event=0,
        nom_offre="Le récit de voyage",
        offer_type="book",
        can_expire=1,
    )
    assert email_data == expected
    def test_non_digital_bookings_can_expire_after_30_days(self):
        booking = make_booking(
            stock__offer__name="Le récit de voyage",
            stock__offer__product__extraData={"isbn": "123456789"},
            stock__offer__product__name="Le récit de voyage",
            stock__offer__product__subcategoryId=subcategories.
            SUPPORT_PHYSIQUE_FILM.id,
            stock__offer__venue__address=None,
            stock__offer__venue__city=None,
            stock__offer__venue__departementCode=None,
            stock__offer__venue__isVirtual=True,
            stock__offer__venue__postalCode=None,
            stock__offer__venue__siret=None,
        )

        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        expected = get_expected_base_email_data(
            booking,
            date="",
            departement="numérique",
            heure="",
            is_event=0,
            nom_offre="Le récit de voyage",
            offer_type="SUPPORT_PHYSIQUE_FILM",
            can_expire=1,
        )
        assert email_data == expected
Ejemplo n.º 4
0
def test_with_two_users_who_booked_the_same_offer():
    booking1 = make_booking()
    make_booking(
        token="XYZ123",
        user__firstName="Jane",
        user__lastName="Roe",
        user__email="*****@*****.**",
        stock=booking1.stock,
    )

    email_data = retrieve_data_for_offerer_booking_recap_email(booking1, [])

    user_data = email_data["Vars"]["users"]
    assert len(user_data) == 2
    jane = {
        "firstName": "Jane",
        "lastName": "Roe",
        "email": "*****@*****.**",
        "contremarque": "XYZ123",
    }
    john = {
        "firstName": "John",
        "lastName": "Doe",
        "email": "*****@*****.**",
        "contremarque": "ABC123",
    }
    assert sorted(user_data, key=lambda d: d["firstName"]) == [jane, john]
def test_should_not_truncate_price():
    booking = make_booking(stock__price=5.86)

    email_data = retrieve_data_for_offerer_booking_recap_email(booking)

    expected = get_expected_base_email_data(booking, prix="5.86")
    assert email_data == expected
    def test_no_need_when_booking_is_autovalidated(self):
        # Given
        offer = offers_factories.OfferFactory(
            venue__name="Lieu de l'offreur",
            venue__managingOfferer__name="Théâtre du coin",
            product=offers_factories.DigitalProductFactory(
                name="Super événement", url="http://example.com"),
        )
        digital_stock = offers_factories.StockWithActivationCodesFactory()
        first_activation_code = digital_stock.activationCodes[0]
        booking = bookings_factories.UsedIndividualBookingFactory(
            individualBooking__user__email="*****@*****.**",
            individualBooking__user__firstName="John",
            individualBooking__user__lastName="Doe",
            stock__offer=offer,
            activationCode=first_activation_code,
            dateCreated=datetime(2018, 1, 1),
        )

        # When
        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        # Then
        expected = get_expected_base_email_data(
            booking,
            date="",
            heure="",
            is_event=0,
            is_booking_autovalidated=1,
            must_use_token_for_payment=0,
            offer_type="VOD",
            contremarque=booking.token,
        )
        assert email_data == expected
def test_with_event():
    booking = make_booking()

    email_data = retrieve_data_for_offerer_booking_recap_email(booking)

    expected = get_expected_base_email_data(booking)
    assert email_data == expected
    def test_with_book_with_missing_isbn(self):
        booking = make_booking(
            stock__offer__name="Le récit de voyage",
            stock__offer__product__extraData={},  # no ISBN
            stock__offer__product__name="Le récit de voyage",
            stock__offer__product__subcategoryId=subcategories.LIVRE_PAPIER.id,
            stock__offer__venue__address=None,
            stock__offer__venue__city=None,
            stock__offer__venue__departementCode=None,
            stock__offer__venue__isVirtual=True,
            stock__offer__venue__postalCode=None,
            stock__offer__venue__siret=None,
        )

        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        expected = get_expected_base_email_data(
            booking,
            date="",
            departement="numérique",
            heure="",
            is_event=0,
            nom_offre="Le récit de voyage",
            offer_type="book",
            ISBN="",
            can_expire=1,
            expiration_delay=10,
        )
        assert email_data == expected
Ejemplo n.º 9
0
def test_recipients_on_production():
    booking = make_booking()
    recipients = ["*****@*****.**", "*****@*****.**"]

    email_data = retrieve_data_for_offerer_booking_recap_email(
        booking, recipients)

    assert email_data["To"] == ", ".join(recipients)
Ejemplo n.º 10
0
def send_booking_recap_emails(booking: Booking) -> None:
    recipients = [settings.ADMINISTRATION_EMAIL_ADDRESS]
    booking_email = booking.stock.offer.bookingEmail
    if booking_email:
        recipients.append(booking_email)

    data = retrieve_data_for_offerer_booking_recap_email(booking)
    mails.send(recipients=recipients, data=data)
Ejemplo n.º 11
0
def test_recipients_when_feature_send_mail_to_users_is_disabled():
    booking = make_booking()
    recipients = ["*****@*****.**", "*****@*****.**"]

    email_data = retrieve_data_for_offerer_booking_recap_email(
        booking, recipients)

    assert email_data["To"] == "*****@*****.**"
Ejemplo n.º 12
0
def send_booking_recap_emails(booking: Booking,
                              send_email: Callable[..., bool]) -> None:
    recipients = [settings.ADMINISTRATION_EMAIL_ADDRESS]
    booking_email = booking.stock.offer.bookingEmail
    if booking_email:
        recipients.append(booking_email)

    data = retrieve_data_for_offerer_booking_recap_email(booking, recipients)
    send_email(data=data)
def test_should_add_reply_to_header_with_beneficiary_email():
    # given
    booking = make_booking(user__email="*****@*****.**")

    # when
    email_data = retrieve_data_for_offerer_booking_recap_email(booking)

    # then
    template_headers = email_data["Headers"]
    assert template_headers["Reply-To"] == "*****@*****.**"
def test_should_add_user_phone_number_to_vars():
    # given
    booking = make_booking(user__phoneNumber="0123456789")

    # when
    email_data = retrieve_data_for_offerer_booking_recap_email(booking)

    # then
    template_vars = email_data["Vars"]
    assert template_vars["user_phoneNumber"] == "0123456789"
    def test_when_use_token_for_payment(self):
        # Given
        booking = make_booking(stock__price=10, )

        # When
        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        # Then
        expected = get_expected_base_email_data(booking,
                                                must_use_token_for_payment=1)
        assert email_data == expected
    def test_should_use_venue_public_name_when_available(self):
        booking = make_booking(
            stock__offer__venue__name="Legal name",
            stock__offer__venue__publicName="Public name",
        )

        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        expected = get_expected_base_email_data(booking,
                                                nom_lieu="Public name")
        assert email_data == expected
    def test_no_need_when_price_is_free(self):
        # Given
        booking = make_booking(stock__price=0, )

        # When
        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        # Then
        expected = get_expected_base_email_data(booking,
                                                prix="Gratuit",
                                                must_use_token_for_payment=0)
        assert email_data == expected
    def test_no_need_when_using_activation_code(self):
        # Given
        booking = make_booking()
        ActivationCodeFactory(stock=booking.stock,
                              booking=booking,
                              code="code_toto")

        # When
        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        # Then
        expected = get_expected_base_email_data(booking,
                                                must_use_token_for_payment=0)
        assert email_data == expected
    def test_with_book(self):
        booking = make_booking(
            stock__offer__name="Le récit de voyage",
            stock__offer__product__extraData={"isbn": "123456789"},
            stock__offer__product__name="Le récit de voyage",
            stock__offer__product__subcategoryId=subcategories.LIVRE_PAPIER.id,
        )

        email_data = retrieve_data_for_offerer_booking_recap_email(
            booking.individualBooking)

        expected = get_expected_base_email_data(
            booking,
            date="",
            departement="75",
            heure="",
            is_event=0,
            nom_offre="Le récit de voyage",
            offer_type="book",
            can_expire=1,
            expiration_delay=10,
        )
        assert email_data == expected
Ejemplo n.º 20
0
def send_individual_booking_confirmation_email_to_offerer(individual_booking: IndividualBooking) -> None:
    offerer_booking_email = individual_booking.booking.stock.offer.bookingEmail
    if offerer_booking_email:
        data = retrieve_data_for_offerer_booking_recap_email(individual_booking)
        mails.send(recipients=[offerer_booking_email], data=data)