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, }, ), ]