summaryrefslogtreecommitdiff
path: root/tests/model_fields/test_floatfield.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_fields/test_floatfield.py')
-rw-r--r--tests/model_fields/test_floatfield.py34
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()