diff --git a/integreat_cms/cms/templates/ajax_poi_form/_poi_address_container.html b/integreat_cms/cms/templates/ajax_poi_form/_poi_address_container.html
index 9a08021ad6..948345e3a5 100644
--- a/integreat_cms/cms/templates/ajax_poi_form/_poi_address_container.html
+++ b/integreat_cms/cms/templates/ajax_poi_form/_poi_address_container.html
@@ -4,6 +4,7 @@
{% translate "Address" %}
, , )
+parameters = [
+ (-1, False, False),
+ (None, True, True),
+ (POI_ID, False, True),
+]
+
+
+@pytest.mark.django_db
+@pytest.mark.parametrize("parameter", parameters)
+def test_create_event(
+ load_test_data: None,
+ login_role_user: tuple[Client, str],
+ settings: SettingsWrapper,
+ caplog: LogCaptureFixture,
+ parameter: tuple[int, bool, bool],
+) -> None:
+ """
+ Test that event creation is working as expected (focus on location check)
+ """
+ client, role = login_role_user
+ poi_id, has_not_location, successfully_created = parameter
+ settings.LANGUAGE_CODE = "en"
+
+ new_event = reverse(
+ "new_event",
+ kwargs={
+ "region_slug": REGION_SLUG,
+ "language_slug": "de",
+ },
+ )
+ data = {
+ "title": EVENT_TITLE,
+ "content": "Lorem ipsum...",
+ "start_date": "2030-01-01",
+ "end_date": "2030-01-01",
+ "is_all_day": True,
+ "status": status.PUBLIC,
+ }
+ if has_not_location:
+ data = copy.deepcopy(data)
+ data.update({"has_not_location": True})
+ if poi_id:
+ data = copy.deepcopy(data)
+ data.update({"location": poi_id})
+ response = client.post(
+ new_event,
+ data=data,
+ )
+ if role in PRIV_STAFF_ROLES + WRITE_ROLES:
+ response.status_code == 302
+
+ if successfully_created:
+ redirect_url = response.headers.get("location")
+ assert_message_in_log(
+ f'SUCCESS Event "{EVENT_TITLE}" was successfully created',
+ caplog,
+ )
+ assert (
+ f"Event "{EVENT_TITLE}" was successfully created"
+ in client.get(redirect_url).content.decode("utf-8")
+ )
+
+ event_translation = EventTranslation.objects.filter(
+ title=EVENT_TITLE
+ ).first()
+ assert event_translation
+ assert Event.objects.filter(id=event_translation.event.id).first()
+
+ else:
+ assert_message_in_log(
+ "ERROR Location: Either disable the event location or provide a valid location",
+ caplog,
+ )
+ assert (
+ "Either disable the event location or provide a valid location"
+ in response.content.decode("utf-8")
+ )
+
+ event_translation = EventTranslation.objects.filter(
+ title=EVENT_TITLE
+ ).first()
+ assert not event_translation
+
+ elif role == ANONYMOUS:
+ assert response.status_code == 302
+ assert (
+ response.headers.get("location") == f"{settings.LOGIN_URL}?next={new_event}"
+ )
+ else:
+ assert response.status_code == 403
diff --git a/tests/cms/views/view_config.py b/tests/cms/views/view_config.py
index 28626566b4..c9c351fa68 100644
--- a/tests/cms/views/view_config.py
+++ b/tests/cms/views/view_config.py
@@ -396,6 +396,7 @@
"end_date": "2030-01-01",
"is_all_day": True,
"status": status.DRAFT,
+ "has_not_location": True,
},
),
("new_page", STAFF_ROLES + [MANAGEMENT, EDITOR, AUTHOR, OBSERVER]),
@@ -730,6 +731,7 @@
"end_date": "2030-01-01",
"is_all_day": True,
"status": status.DRAFT,
+ "has_not_location": True,
},
),
("new_page", STAFF_ROLES),
@@ -1375,6 +1377,7 @@
"end_date": "2030-01-01",
"is_all_day": True,
"status": status.DRAFT,
+ "has_not_location": True,
},
),
(
diff --git a/tests/mt_api/mt_api_test.py b/tests/mt_api/mt_api_test.py
index c1edb3ac4a..38547cb5b7 100644
--- a/tests/mt_api/mt_api_test.py
+++ b/tests/mt_api/mt_api_test.py
@@ -497,6 +497,7 @@ def test_bulk_mt_up_to_date_and_ready_for_mt(
"start_date": "2030-01-01",
"end_date": "2030-01-01",
"is_all_day": True,
+ "has_not_location": True,
},
),
]