aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/generics.py
diff options
context:
space:
mode:
authorTom Christie2013-02-22 22:02:42 +0000
committerTom Christie2013-02-22 22:02:42 +0000
commitbc87bf13b48e4ad6b3957ed686cad8a68c2072a4 (patch)
tree6fbe53fffd6589cfcdcbcddf97d7355df0a7150a /rest_framework/tests/generics.py
parentd44eb2094211820fbdd014fd2884fd5ed04688ab (diff)
downloaddjango-rest-framework-bc87bf13b48e4ad6b3957ed686cad8a68c2072a4.tar.bz2
Tests and fix for #666.
Closes #666.
Diffstat (limited to 'rest_framework/tests/generics.py')
-rw-r--r--rest_framework/tests/generics.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/generics.py
index 2e7ce727..2dcf0106 100644
--- a/rest_framework/tests/generics.py
+++ b/rest_framework/tests/generics.py
@@ -319,7 +319,7 @@ class TestCreateModelWithAutoNowAddField(TestCase):
self.assertEquals(created.content, 'foobar')
-# Test for particularly ugly reression with m2m in browseable API
+# Test for particularly ugly regression with m2m in browseable API
class ClassB(models.Model):
name = models.CharField(max_length=255)
@@ -350,3 +350,35 @@ class TestM2MBrowseableAPI(TestCase):
view = ExampleView().as_view()
response = view(request).render()
self.assertEquals(response.status_code, status.HTTP_200_OK)
+
+
+# Regression for #666
+
+class ValidationModel(models.Model):
+ blank_validated_field = models.CharField(max_length=255)
+
+
+class ValidationModelSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = ValidationModel
+ fields = ('blank_validated_field',)
+ read_only_fields = ('blank_validated_field',)
+
+
+class UpdateValidationModel(generics.RetrieveUpdateDestroyAPIView):
+ model = ValidationModel
+ serializer_class = ValidationModelSerializer
+
+
+class TestPreSaveValidationExclusions(TestCase):
+ def test_pre_save_validation_exclusions(self):
+ """
+ Somewhat weird test case to ensure that we don't perform model
+ validation on read only fields.
+ """
+ obj = ValidationModel.objects.create(blank_validated_field='')
+ request = factory.put('/', json.dumps({}),
+ content_type='application/json')
+ view = UpdateValidationModel().as_view()
+ response = view(request, pk=obj.pk).render()
+ self.assertEquals(response.status_code, status.HTTP_200_OK)