From 20539aac78b193b46bd502d7dbc254abaf2b07c4 Mon Sep 17 00:00:00 2001 From: Phin Wolkwitz Date: Fri, 7 Aug 2026 15:35:46 +0200 Subject: [PATCH] Add simple add-on-sendmail-testcases --- src/tests/plugins/sendmail/test_sendmail.py | 121 ++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/src/tests/plugins/sendmail/test_sendmail.py b/src/tests/plugins/sendmail/test_sendmail.py index c971291d03..b587227852 100644 --- a/src/tests/plugins/sendmail/test_sendmail.py +++ b/src/tests/plugins/sendmail/test_sendmail.py @@ -406,6 +406,127 @@ def test_sendmail_attendee_product_filter(logged_in_client, sendmail_url, event, assert '/order/' not in djmail.outbox[0].body +@pytest.mark.django_db +def test_sendmail_attendee_addon_filter(logged_in_client, sendmail_url, event, order, pos): + event.settings.attendee_emails_asked = True + with scopes_disabled(): + addon = Item.objects.create(name='Test addon', event=event, default_price=12) + p = pos + p.attendee_email = 'attendee1@dummy.test' + p.save() + order.positions.create( + item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p + ) + + djmail.outbox = [] + response = logged_in_client.post(sendmail_url + 'orders/', + {'sendto': 'na', + 'action': 'send', + 'recipients': 'attendees', + 'items': addon.pk, + 'subject_0': 'Test subject', + 'message_0': 'This is a test file for sending mails.', + }, + follow=True) + assert response.status_code == 200 + assert 'alert-success' in response.rendered_content + assert len(djmail.outbox) == 1 + assert djmail.outbox[0].to == ['add-on-attendee@dummy.test'] + assert '/ticket/' in djmail.outbox[0].body + assert '/order/' not in djmail.outbox[0].body + + +@pytest.mark.django_db +def test_sendmail_attendee_addon_unpersonalized_filter(logged_in_client, sendmail_url, event, order, pos): + event.settings.attendee_emails_asked = True + with scopes_disabled(): + addon = Item.objects.create(name='Test addon', event=event, default_price=12) + p = pos + p.attendee_email = 'attendee1@dummy.test' + p.save() + order.positions.create( + item=addon, price=0, addon_to=p + ) + + djmail.outbox = [] + response = logged_in_client.post(sendmail_url + 'orders/', + {'sendto': 'na', + 'action': 'send', + 'recipients': 'attendees', + 'items': addon.pk, + 'subject_0': 'Test subject', + 'message_0': 'This is a test file for sending mails.', + }, + follow=True) + assert response.status_code == 200 + assert 'alert-success' in response.rendered_content + assert len(djmail.outbox) == 1 + assert djmail.outbox[0].to == ['attendee1@dummy.test'] + assert '/ticket/' in djmail.outbox[0].body + assert '/order/' not in djmail.outbox[0].body + + +@pytest.mark.django_db +def test_sendmail_attendee_addon_unp_unp_filter(logged_in_client, sendmail_url, event, order, pos): + event.settings.attendee_emails_asked = True + with scopes_disabled(): + addon = Item.objects.create(name='Test addon', event=event, default_price=12) + order.positions.create( + item=addon, price=0, addon_to=pos + ) + + djmail.outbox = [] + response = logged_in_client.post(sendmail_url + 'orders/', + {'sendto': 'na', + 'action': 'send', + 'recipients': 'attendees', + 'items': addon.pk, + 'subject_0': 'Test subject', + 'message_0': 'This is a test file for sending mails.', + }, + follow=True) + assert response.status_code == 200 + assert 'alert-success' in response.rendered_content + assert len(djmail.outbox) == 1 + assert djmail.outbox[0].to == [order.email] + assert '/ticket/' not in djmail.outbox[0].body + assert '/order/' in djmail.outbox[0].body + + +@pytest.mark.django_db +def test_sendmail_attendee_addon_one_unp_filter(logged_in_client, sendmail_url, event, order, pos): + event.settings.attendee_emails_asked = True + with scopes_disabled(): + p = pos + p.attendee_email = 'attendee1@dummy.test' + p.save() + addon = Item.objects.create(name='Test addon', event=event, default_price=12) + order.positions.create( + item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p + ) + order.positions.create( + item=addon, price=0, addon_to=p + ) + + djmail.outbox = [] + response = logged_in_client.post(sendmail_url + 'orders/', + {'sendto': 'na', + 'action': 'send', + 'recipients': 'attendees', + 'items': addon.pk, + 'subject_0': 'Test subject', + 'message_0': 'This is a test file for sending mails.', + }, + follow=True) + assert response.status_code == 200 + assert 'alert-success' in response.rendered_content + assert len(djmail.outbox) == 2 + for msg in djmail.outbox: + assert msg.to in [['attendee1@dummy.test'], ['add-on-attendee@dummy.test']] + assert '/ticket/' in msg.body + assert '/order/' not in msg.body + + @pytest.mark.django_db def test_sendmail_attendee_subevent_filter(logged_in_client, sendmail_url, event, item, order, pos): event.settings.attendee_emails_asked = True