diff --git a/src/pretix/api/serializers/item.py b/src/pretix/api/serializers/item.py index 2901a07b97..df2f83bf2b 100644 --- a/src/pretix/api/serializers/item.py +++ b/src/pretix/api/serializers/item.py @@ -287,8 +287,8 @@ class QuestionSerializer(I18nAwareModelSerializer): if value: if value.type not in (Question.TYPE_CHOICE, Question.TYPE_BOOLEAN, Question.TYPE_CHOICE_MULTIPLE): raise ValidationError('Question dependencies can only be set to boolean or choice questions.') - if value == self.instance: - raise ValidationError('A question cannot depend on itself.') + if value == self.instance: + raise ValidationError('A question cannot depend on itself.') return value def validate(self, data): diff --git a/src/tests/api/test_items.py b/src/tests/api/test_items.py index 2f97e2e388..00dfedabee 100644 --- a/src/tests/api/test_items.py +++ b/src/tests/api/test_items.py @@ -1973,6 +1973,31 @@ def test_question_create(token_client, organizer, event, event2, item): q2 = Question.objects.get(pk=resp.data['id']) assert q2.dependency_question == question + resp = token_client.post( + '/api/v1/organizers/{}/events/{}/questions/'.format(organizer.slug, event.slug), + { + "question": "What's your name?", + "type": "S", + "required": True, + "items": [item.pk], + "position": 0, + "ask_during_checkin": False, + "identifier": None, + "dependency_question": None, + "dependency_values": [], + }, + format='json' + ) + assert resp.status_code == 201 + with scopes_disabled(): + question = Question.objects.get(pk=resp.data['id']) + assert question.question == "What's your name?" + assert question.type == "S" + assert question.identifier is not None + assert len(question.items.all()) == 1 + assert question.dependency_question is None + assert question.dependency_values == [] + @pytest.mark.django_db def test_question_update(token_client, organizer, event, question): @@ -2006,6 +2031,19 @@ def test_question_update_circular_dependency(token_client, organizer, event, que assert resp.content.decode() == '{"non_field_errors":["Circular dependency between questions detected."]}' +@pytest.mark.django_db +def test_question_self_dependency(token_client, organizer, event, question): + resp = token_client.patch( + '/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk), + { + "dependency_question": question.pk + }, + format='json' + ) + assert resp.status_code == 400 + assert resp.content.decode() == '{"dependency_question":["A question cannot depend on itself."]}' + + @pytest.mark.django_db def test_question_update_options(token_client, organizer, event, question, item): resp = token_client.patch(