Skip to content

Commit

Permalink
Fix event creation
Browse files Browse the repository at this point in the history
  • Loading branch information
MizukiTemma committed Dec 11, 2024
1 parent 9d27598 commit 4601f85
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
{% translate "Address" %}
</label>
<input name="location"
id="id_location"
class="hidden"
value="{% if poi %}{{ poi.id }}{% else %}-1{% endif %}"
readonly
Expand Down
2 changes: 2 additions & 0 deletions integreat_cms/release_notes/current/unreleased/3223.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
en: Fix the bug of event creation with no physical location
de: Behebe den Fehler bei Erstellung der Veranstaltungen ohne physischen Standort
118 changes: 118 additions & 0 deletions tests/cms/views/events/test_event_form.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
from __future__ import annotations

import copy
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from _pytest.logging import LogCaptureFixture
from django.test.client import Client
from pytest_django.fixtures import SettingsWrapper

import pytest
from django.test.client import Client
from django.urls import reverse

from integreat_cms.cms.constants import status
from integreat_cms.cms.models import Event, EventTranslation
from tests.conftest import ANONYMOUS, PRIV_STAFF_ROLES, WRITE_ROLES
from tests.utils import assert_message_in_log

REGION_SLUG = "augsburg"
POI_ID = 4 # Use a POI which belongs to the region with REGION_SLUG
EVENT_TITLE = (
"New Event" # Choose a name that does not exist yet as event title in the test data
)


# Possible combinations
# (<ID of selected POI>, <Whether "no physical location" is checked>, <whether successful or not> )
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 &quot;{EVENT_TITLE}&quot; 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
3 changes: 3 additions & 0 deletions tests/cms/views/view_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]),
Expand Down Expand Up @@ -730,6 +731,7 @@
"end_date": "2030-01-01",
"is_all_day": True,
"status": status.DRAFT,
"has_not_location": True,
},
),
("new_page", STAFF_ROLES),
Expand Down Expand Up @@ -1375,6 +1377,7 @@
"end_date": "2030-01-01",
"is_all_day": True,
"status": status.DRAFT,
"has_not_location": True,
},
),
(
Expand Down
1 change: 1 addition & 0 deletions tests/mt_api/mt_api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
),
]
Expand Down

0 comments on commit 4601f85

Please sign in to comment.