mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
enhanced tests
This commit is contained in:
parent
98161177e5
commit
d918f9e95f
|
@ -1337,18 +1337,19 @@ class Issue6751Test(TestCase):
|
||||||
|
|
||||||
class Issue2648Model(models.Model):
|
class Issue2648Model(models.Model):
|
||||||
char_field = models.CharField(max_length=100)
|
char_field = models.CharField(max_length=100)
|
||||||
|
int_field = models.IntegerField()
|
||||||
updated_at = models.DateTimeField(auto_now=True, blank=True, null=True)
|
updated_at = models.DateTimeField(auto_now=True, blank=True, null=True)
|
||||||
|
|
||||||
|
|
||||||
class Issue2648Test(TestCase):
|
class Issue2648Test(TestCase):
|
||||||
def test_model_serializer_uses_partial_update_extra_fields_when_not_empty(self):
|
def test_model_serializer_uses_partial_update_extra_fields_when_provided(self):
|
||||||
class TestSerializer(serializers.ModelSerializer):
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Issue2648Model
|
model = Issue2648Model
|
||||||
partial_update_extra_fields = ('updated_at',)
|
partial_update_extra_fields = ('char_field',)
|
||||||
fields = ('updated_at', 'char_field',)
|
fields = ('updated_at', 'char_field',)
|
||||||
|
|
||||||
instance = Issue2648Model.objects.create(char_field='initial value')
|
instance = Issue2648Model.objects.create(char_field='initial value', int_field=42)
|
||||||
Issue2648Model.objects.filter(id=instance.id).update(updated_at=None)
|
Issue2648Model.objects.filter(id=instance.id).update(updated_at=None)
|
||||||
instance = Issue2648Model.objects.get(id=instance.id)
|
instance = Issue2648Model.objects.get(id=instance.id)
|
||||||
|
|
||||||
|
@ -1357,6 +1358,26 @@ class Issue2648Test(TestCase):
|
||||||
serializer.save()
|
serializer.save()
|
||||||
|
|
||||||
self.assertEqual(instance.char_field, 'char_field updated value')
|
self.assertEqual(instance.char_field, 'char_field updated value')
|
||||||
|
self.assertEqual(instance.int_field, 42)
|
||||||
|
self.assertIsNone(instance.updated_at)
|
||||||
|
|
||||||
|
def test_model_serializer_uses_partial_update_extra_fields_when_not_empty(self):
|
||||||
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Issue2648Model
|
||||||
|
partial_update_extra_fields = ('updated_at',)
|
||||||
|
fields = ('updated_at', 'char_field',)
|
||||||
|
|
||||||
|
instance = Issue2648Model.objects.create(char_field='initial value', int_field=42)
|
||||||
|
Issue2648Model.objects.filter(id=instance.id).update(updated_at=None)
|
||||||
|
instance = Issue2648Model.objects.get(id=instance.id)
|
||||||
|
|
||||||
|
serializer = TestSerializer(instance=instance, data={'char_field': 'char_field updated value'}, partial=True)
|
||||||
|
serializer.is_valid()
|
||||||
|
serializer.save()
|
||||||
|
|
||||||
|
self.assertEqual(instance.char_field, 'char_field updated value')
|
||||||
|
self.assertEqual(instance.int_field, 42)
|
||||||
self.assertIsNotNone(instance.updated_at)
|
self.assertIsNotNone(instance.updated_at)
|
||||||
|
|
||||||
def test_model_serializer_uses_partial_update_extra_fields_when_empty(self):
|
def test_model_serializer_uses_partial_update_extra_fields_when_empty(self):
|
||||||
|
@ -1366,7 +1387,7 @@ class Issue2648Test(TestCase):
|
||||||
partial_update_extra_fields = []
|
partial_update_extra_fields = []
|
||||||
fields = ('updated_at', 'char_field',)
|
fields = ('updated_at', 'char_field',)
|
||||||
|
|
||||||
instance = Issue2648Model.objects.create(char_field='initial value')
|
instance = Issue2648Model.objects.create(char_field='initial value', int_field=42)
|
||||||
Issue2648Model.objects.filter(id=instance.id).update(updated_at=None)
|
Issue2648Model.objects.filter(id=instance.id).update(updated_at=None)
|
||||||
instance = Issue2648Model.objects.get(id=instance.id)
|
instance = Issue2648Model.objects.get(id=instance.id)
|
||||||
|
|
||||||
|
@ -1375,6 +1396,7 @@ class Issue2648Test(TestCase):
|
||||||
serializer.save()
|
serializer.save()
|
||||||
|
|
||||||
self.assertEqual(instance.char_field, 'char_field updated value')
|
self.assertEqual(instance.char_field, 'char_field updated value')
|
||||||
|
self.assertEqual(instance.int_field, 42)
|
||||||
self.assertIsNone(instance.updated_at)
|
self.assertIsNone(instance.updated_at)
|
||||||
|
|
||||||
def test_model_serializer_validate_partial_update_extra_fields_are_model_fields(self):
|
def test_model_serializer_validate_partial_update_extra_fields_are_model_fields(self):
|
||||||
|
@ -1384,7 +1406,7 @@ class Issue2648Test(TestCase):
|
||||||
partial_update_extra_fields = ('missing_model_field',)
|
partial_update_extra_fields = ('missing_model_field',)
|
||||||
fields = ('updated_at', 'char_field',)
|
fields = ('updated_at', 'char_field',)
|
||||||
|
|
||||||
instance = Issue2648Model.objects.create(char_field='initial value')
|
instance = Issue2648Model.objects.create(char_field='initial value', int_field=42)
|
||||||
serializer = TestSerializer(instance=instance, data={'char_field': 'char_field updated value'}, partial=True)
|
serializer = TestSerializer(instance=instance, data={'char_field': 'char_field updated value'}, partial=True)
|
||||||
serializer.is_valid()
|
serializer.is_valid()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user