diff options
| author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2017-03-29 22:29:53 +0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-03-30 08:47:16 -0400 |
| commit | 8484cf4cd0a6d3553f6fc1d62fa6dc04f04624f0 (patch) | |
| tree | 54718e153fcaee37e2553fe1ae303a732fb44589 /tests | |
| parent | d476fa96ac1a91b5dbb9cf735665bb8755d1ee2a (diff) | |
[1.11.x] Refs #18247 -- Fixed SQLite QuerySet filtering on decimal result of Least and Greatest.
Backport of 068d75688f28f9a1530b771ae1d625f41e98cd82 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/db_functions/models.py | 5 | ||||
| -rw-r--r-- | tests/db_functions/tests.py | 21 |
2 files changed, 25 insertions, 1 deletions
diff --git a/tests/db_functions/models.py b/tests/db_functions/models.py index 7494680c23..63359b7948 100644 --- a/tests/db_functions/models.py +++ b/tests/db_functions/models.py @@ -56,3 +56,8 @@ class DTModel(models.Model): def __str__(self): return 'DTModel({0})'.format(self.name) + + +class DecimalModel(models.Model): + n1 = models.DecimalField(decimal_places=2, max_digits=6) + n2 = models.DecimalField(decimal_places=2, max_digits=6) diff --git a/tests/db_functions/tests.py b/tests/db_functions/tests.py index 26acc687ea..3041f29570 100644 --- a/tests/db_functions/tests.py +++ b/tests/db_functions/tests.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals from datetime import datetime, timedelta +from decimal import Decimal from unittest import skipIf, skipUnless from django.db import connection @@ -13,7 +14,7 @@ from django.db.models.functions import ( from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature from django.utils import timezone -from .models import Article, Author, Fan +from .models import Article, Author, DecimalModel, Fan lorem_ipsum = """ @@ -204,6 +205,15 @@ class FunctionTests(TestCase): author.refresh_from_db() self.assertEqual(author.alias, 'Jim') + def test_greatest_decimal_filter(self): + obj = DecimalModel.objects.create(n1=Decimal('1.1'), n2=Decimal('1.2')) + self.assertCountEqual( + DecimalModel.objects.annotate( + greatest=Greatest('n1', 'n2'), + ).filter(greatest=Decimal('1.2')), + [obj], + ) + def test_least(self): now = timezone.now() before = now - timedelta(hours=1) @@ -299,6 +309,15 @@ class FunctionTests(TestCase): author.refresh_from_db() self.assertEqual(author.alias, 'James Smith') + def test_least_decimal_filter(self): + obj = DecimalModel.objects.create(n1=Decimal('1.1'), n2=Decimal('1.2')) + self.assertCountEqual( + DecimalModel.objects.annotate( + least=Least('n1', 'n2'), + ).filter(least=Decimal('1.1')), + [obj], + ) + def test_concat(self): Author.objects.create(name='Jayden') Author.objects.create(name='John Smith', alias='smithj', goes_by='John') |
