diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2018-10-15 15:57:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-15 15:57:22 +0200 |
| commit | f2e2a1bd4be8ec7624b081488292b804777a526a (patch) | |
| tree | 5d63aa5c753914d172562b9c2d8fd9b0fb244c42 /tests | |
| parent | f07091a30fbac713a03d292ec1c901f0a7757440 (diff) | |
Fixed #29845 -- Fixed Cast crash on MySQL when casting to DecimalField.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/db_functions/comparison/test_cast.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/tests/db_functions/comparison/test_cast.py b/tests/db_functions/comparison/test_cast.py index dafe0fa9aa..c5698d6d0e 100644 --- a/tests/db_functions/comparison/test_cast.py +++ b/tests/db_functions/comparison/test_cast.py @@ -10,7 +10,7 @@ from django.test import ( TestCase, ignore_warnings, override_settings, skipUnlessDBFeature, ) -from ..models import Author, DTModel, Fan +from ..models import Author, DTModel, Fan, FloatModel class CastTests(TestCase): @@ -37,6 +37,20 @@ class CastTests(TestCase): names = Author.objects.annotate(cast_string=Cast('name', models.CharField(max_length=1))) self.assertEqual(names.get().cast_string, 'B') + @skipUnlessDBFeature('supports_cast_with_precision') + def test_cast_to_decimal_field(self): + FloatModel.objects.create(f1=-1.934, f2=3.467) + float_obj = FloatModel.objects.annotate( + cast_f1_decimal=Cast('f1', models.DecimalField(max_digits=8, decimal_places=2)), + cast_f2_decimal=Cast('f2', models.DecimalField(max_digits=8, decimal_places=1)), + ).get() + self.assertEqual(float_obj.cast_f1_decimal, decimal.Decimal('-1.93')) + self.assertEqual(float_obj.cast_f2_decimal, decimal.Decimal('3.5')) + author_obj = Author.objects.annotate( + cast_alias_decimal=Cast('alias', models.DecimalField(max_digits=8, decimal_places=2)), + ).get() + self.assertEqual(author_obj.cast_alias_decimal, decimal.Decimal('1')) + def test_cast_to_integer(self): for field_class in ( models.AutoField, |
