From 5054504aa42b10113027def21f4016c798caa172 Mon Sep 17 00:00:00 2001 From: Filippo Santovito Date: Thu, 21 May 2015 12:56:13 +0200 Subject: [PATCH] [test] testing issue https://github.com/tomchristie/django-rest-framework/issues/2954 --- tests/test_issue2954.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/test_issue2954.py diff --git a/tests/test_issue2954.py b/tests/test_issue2954.py new file mode 100644 index 000000000..028cc74ba --- /dev/null +++ b/tests/test_issue2954.py @@ -0,0 +1,40 @@ +from django.db import models +from django.test import TestCase +from django.core.exceptions import ValidationError +from rest_framework import serializers +from rest_framework import viewsets +from rest_framework.test import APIRequestFactory +from rest_framework import status + + +factory = APIRequestFactory() + + +class TestInvalidModel(TestCase): + + def test_invalid_model(self): + """ + """ + class InvalidModel(models.Model): + afield = models.CharField(blank=True, max_length=10) + + def save(self, *args, **kwargs): + # never save this object. + raise ValidationError('a validation error') + + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = InvalidModel + + serializer = TestSerializer(data={'afield': 'foo'}) + serializer.is_valid() + self.assertRaises(ValidationError, serializer.save) + + class TestModelViewSet(viewsets.ModelViewSet): + serializer_class = TestSerializer + queryset = InvalidModel.objects.all() + + request = factory.post('/', '{"afield": "foo"}', content_type='application/json') + view = TestModelViewSet.as_view(actions={'post': 'create'}) + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)