diff options
Diffstat (limited to 'tests/model_fields/test_floatfield.py')
| -rw-r--r-- | tests/model_fields/test_floatfield.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/model_fields/test_floatfield.py b/tests/model_fields/test_floatfield.py new file mode 100644 index 0000000000..52f61c88d5 --- /dev/null +++ b/tests/model_fields/test_floatfield.py @@ -0,0 +1,34 @@ +from django.db import transaction +from django.test import TestCase + +from .models import FloatModel + + +class TestFloatField(TestCase): + + def test_float_validates_object(self): + instance = FloatModel(size=2.5) + # Try setting float field to unsaved object + instance.size = instance + with transaction.atomic(): + with self.assertRaises(TypeError): + instance.save() + # Set value to valid and save + instance.size = 2.5 + instance.save() + self.assertTrue(instance.id) + # Set field to object on saved instance + instance.size = instance + msg = ( + 'Tried to update field model_fields.FloatModel.size with a model ' + 'instance, <FloatModel: FloatModel object>. Use a value ' + 'compatible with FloatField.' + ) + with transaction.atomic(): + with self.assertRaisesMessage(TypeError, msg): + instance.save() + # Try setting field to object on retrieved object + obj = FloatModel.objects.get(pk=instance.id) + obj.size = obj + with self.assertRaises(TypeError): + obj.save() |
