API: Enforce that Item.default_price can't be null

This commit is contained in:
Raphael Michel
2022-10-25 11:39:48 +02:00
parent 4146437380
commit 87a413ea42
2 changed files with 35 additions and 0 deletions

View File

@@ -184,6 +184,8 @@ class ItemSerializer(I18nAwareModelSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['default_price'].allow_null = False
self.fields['default_price'].required = True
if not self.read_only:
self.fields['require_membership_types'].queryset = self.context['event'].organizer.membership_types.all()
self.fields['grant_membership_type'].queryset = self.context['event'].organizer.membership_types.all()

View File

@@ -476,6 +476,39 @@ def test_item_create(token_client, organizer, event, item, category, taxrule, me
assert Item.objects.get(pk=resp.data['id']).require_membership_types.count() == 1
@pytest.mark.django_db
def test_item_create_price_required(token_client, organizer, event, item, category, taxrule):
resp = token_client.post(
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
{
"category": category.pk,
"name": {
"en": "Ticket"
},
"active": True,
"description": None,
},
format='json'
)
assert resp.status_code == 400
assert resp.data == {"default_price": ["This field is required."]}
resp = token_client.post(
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
{
"category": category.pk,
"name": {
"en": "Ticket"
},
"active": True,
"description": None,
"default_price": None,
},
format='json'
)
assert resp.status_code == 400
assert resp.data == {"default_price": ["This field may not be null."]}
@pytest.mark.django_db
def test_item_create_with_variation(token_client, organizer, event, item, category, taxrule):
resp = token_client.post(