API: Add additional tests for modifying meta data (Z#23247634)

This commit is contained in:
Raphael Michel
2026-09-23 19:01:52 +02:00
parent 806d0a5748
commit b8f8e49cce
2 changed files with 75 additions and 1 deletions
+9
View File
@@ -61,6 +61,15 @@ def meta_prop(organizer):
return organizer.meta_properties.create(name="type", default="Concert")
@pytest.fixture
@scopes_disabled()
def meta_prop_choices(organizer):
return organizer.meta_properties.create(name="department", default="A", choices=[
{"key": "A", "label": {"en": "Group A"}},
{"key": "B", "label": {"en": "Group B"}},
])
@pytest.fixture
@scopes_disabled()
def event(organizer, meta_prop):
+66 -1
View File
@@ -703,7 +703,7 @@ def test_event_delete_with_clone(token_client, organizer, event, meta_prop):
@pytest.mark.django_db
def test_event_update(token_client, organizer, event, item, meta_prop):
def test_event_update(token_client, team, organizer, event, item, meta_prop, meta_prop_choices):
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
@@ -782,6 +782,26 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
property__name=meta_prop.name, value="Workshop"
).exists()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
"meta_data": {
meta_prop.name: "Workshop",
meta_prop_choices.name: "B"
}
},
format='json'
)
assert resp.status_code == 200
assert resp.data["meta_data"] == {
meta_prop.name: "Workshop",
meta_prop_choices.name: "B"
}
with scopes_disabled():
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
property__name=meta_prop_choices.name, value="B"
).exists()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
@@ -796,6 +816,51 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
property__name=meta_prop.name
).exists()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
"meta_data": {
meta_prop_choices.name: "invalid"
}
},
format='json'
)
assert resp.status_code == 400
assert resp.content.decode() == '{"meta_data":["Meta data property \'department\' does not allow value \'invalid\'."]}'
meta_prop_choices.protected = True
meta_prop_choices.save()
team.all_organizer_permissions = False
team.limit_organizer_permissions = {}
team.save()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
"meta_data": {
meta_prop_choices.name: "A"
}
},
format='json'
)
assert resp.status_code == 200 # silently ignored
assert resp.data["meta_data"] == {}
team.all_organizer_permissions = True
team.save()
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{
"meta_data": {
meta_prop_choices.name: "A"
}
},
format='json'
)
assert resp.status_code == 200
assert resp.data["meta_data"] == {
meta_prop_choices.name: "A"
}
resp = token_client.patch(
'/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug),
{