forked from CGM_Public/pretix_original
API: Add additional tests for modifying meta data (Z#23247634)
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user