summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJosh Smeaton <josh.smeaton@gmail.com>2015-02-11 16:38:02 +1100
committerJosh Smeaton <josh.smeaton@gmail.com>2015-02-12 08:53:03 +1100
commita6ea62aeafd4512f6d13aeda908f7622776a4537 (patch)
tree27059733fa267e00d7d2bd4058d2f8aef88e2ca0 /tests
parent343c0875338128dad162d4806fe908fb31404d14 (diff)
[1.8.x] Refs #14030 -- Improved expression support for python values
Backport of e2d6e14662d780383e18066a3182155fb5b7747b from master
Diffstat (limited to 'tests')
-rw-r--r--tests/aggregation/tests.py10
-rw-r--r--tests/db_functions/tests.py2
-rw-r--r--tests/expressions_case/tests.py120
3 files changed, 66 insertions, 66 deletions
diff --git a/tests/aggregation/tests.py b/tests/aggregation/tests.py
index 9282c7e10c..bc3929d98e 100644
--- a/tests/aggregation/tests.py
+++ b/tests/aggregation/tests.py
@@ -8,7 +8,7 @@ from django.core.exceptions import FieldError
from django.db import connection
from django.db.models import (
F, Aggregate, Avg, Count, DecimalField, FloatField, Func, IntegerField,
- Max, Min, Sum, Value,
+ Max, Min, Sum,
)
from django.test import TestCase, ignore_warnings
from django.test.utils import Approximate, CaptureQueriesContext
@@ -706,14 +706,14 @@ class ComplexAggregateTestCase(TestCase):
Book.objects.aggregate(fail=F('price'))
def test_nonfield_annotation(self):
- book = Book.objects.annotate(val=Max(Value(2, output_field=IntegerField())))[0]
+ book = Book.objects.annotate(val=Max(2, output_field=IntegerField()))[0]
self.assertEqual(book.val, 2)
- book = Book.objects.annotate(val=Max(Value(2), output_field=IntegerField()))[0]
+ book = Book.objects.annotate(val=Max(2, output_field=IntegerField()))[0]
self.assertEqual(book.val, 2)
def test_missing_output_field_raises_error(self):
with six.assertRaisesRegex(self, FieldError, 'Cannot resolve expression type, unknown output_field'):
- Book.objects.annotate(val=Max(Value(2)))[0]
+ Book.objects.annotate(val=Max(2))[0]
def test_annotation_expressions(self):
authors = Author.objects.annotate(combined_ages=Sum(F('age') + F('friends__age'))).order_by('name')
@@ -772,7 +772,7 @@ class ComplexAggregateTestCase(TestCase):
with six.assertRaisesRegex(self, TypeError, 'Complex aggregates require an alias'):
Author.objects.aggregate(Sum('age') / Count('age'))
with six.assertRaisesRegex(self, TypeError, 'Complex aggregates require an alias'):
- Author.objects.aggregate(Sum(Value(1)))
+ Author.objects.aggregate(Sum(1))
def test_aggregate_over_complex_annotation(self):
qs = Author.objects.annotate(
diff --git a/tests/db_functions/tests.py b/tests/db_functions/tests.py
index 9e7d27899a..f07e8770f0 100644
--- a/tests/db_functions/tests.py
+++ b/tests/db_functions/tests.py
@@ -281,7 +281,7 @@ class FunctionTests(TestCase):
def test_substr_with_expressions(self):
Author.objects.create(name='John Smith', alias='smithj')
Author.objects.create(name='Rhonda')
- authors = Author.objects.annotate(name_part=Substr('name', V(5), V(3)))
+ authors = Author.objects.annotate(name_part=Substr('name', 5, 3))
self.assertQuerysetEqual(
authors.order_by('name'), [
' Sm',
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index 176c969c29..b1b4c77948 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -78,8 +78,8 @@ class CaseExpressionTests(TestCase):
def test_annotate_without_default(self):
self.assertQuerysetEqual(
CaseTestModel.objects.annotate(test=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
output_field=models.IntegerField(),
)).order_by('pk'),
[(1, 1), (2, 2), (3, None), (2, 2), (3, None), (3, None), (4, None)],
@@ -244,9 +244,9 @@ class CaseExpressionTests(TestCase):
self.assertQuerysetEqual(
CaseTestModel.objects.annotate(
test=Case(
- When(integer=1, then=Value(2)),
- When(integer=2, then=Value(1)),
- default=Value(3),
+ When(integer=1, then=2),
+ When(integer=2, then=1),
+ default=3,
output_field=models.IntegerField(),
) + 1,
).order_by('pk'),
@@ -278,19 +278,19 @@ class CaseExpressionTests(TestCase):
self.assertEqual(
CaseTestModel.objects.aggregate(
one=models.Sum(Case(
- When(integer=1, then=Value(1)),
+ When(integer=1, then=1),
output_field=models.IntegerField(),
)),
two=models.Sum(Case(
- When(integer=2, then=Value(1)),
+ When(integer=2, then=1),
output_field=models.IntegerField(),
)),
three=models.Sum(Case(
- When(integer=3, then=Value(1)),
+ When(integer=3, then=1),
output_field=models.IntegerField(),
)),
four=models.Sum(Case(
- When(integer=4, then=Value(1)),
+ When(integer=4, then=1),
output_field=models.IntegerField(),
)),
),
@@ -311,11 +311,11 @@ class CaseExpressionTests(TestCase):
self.assertEqual(
CaseTestModel.objects.aggregate(
equal=models.Sum(Case(
- When(integer2=F('integer'), then=Value(1)),
+ When(integer2=F('integer'), then=1),
output_field=models.IntegerField(),
)),
plus_one=models.Sum(Case(
- When(integer2=F('integer') + 1, then=Value(1)),
+ When(integer2=F('integer') + 1, then=1),
output_field=models.IntegerField(),
)),
),
@@ -325,9 +325,9 @@ class CaseExpressionTests(TestCase):
def test_filter(self):
self.assertQuerysetEqual(
CaseTestModel.objects.filter(integer2=Case(
- When(integer=2, then=Value(3)),
- When(integer=3, then=Value(4)),
- default=Value(1),
+ When(integer=2, then=3),
+ When(integer=3, then=4),
+ default=1,
output_field=models.IntegerField(),
)).order_by('pk'),
[(1, 1), (2, 3), (3, 4), (3, 4)],
@@ -337,8 +337,8 @@ class CaseExpressionTests(TestCase):
def test_filter_without_default(self):
self.assertQuerysetEqual(
CaseTestModel.objects.filter(integer2=Case(
- When(integer=2, then=Value(3)),
- When(integer=3, then=Value(4)),
+ When(integer=2, then=3),
+ When(integer=3, then=4),
output_field=models.IntegerField(),
)).order_by('pk'),
[(2, 3), (3, 4), (3, 4)],
@@ -381,8 +381,8 @@ class CaseExpressionTests(TestCase):
def test_filter_with_join_in_condition(self):
self.assertQuerysetEqual(
CaseTestModel.objects.filter(integer=Case(
- When(integer2=F('o2o_rel__integer') + 1, then=Value(2)),
- When(integer2=F('o2o_rel__integer'), then=Value(3)),
+ When(integer2=F('o2o_rel__integer') + 1, then=2),
+ When(integer2=F('o2o_rel__integer'), then=3),
output_field=models.IntegerField(),
)).order_by('pk'),
[(2, 3), (3, 3)],
@@ -392,9 +392,9 @@ class CaseExpressionTests(TestCase):
def test_filter_with_join_in_predicate(self):
self.assertQuerysetEqual(
CaseTestModel.objects.filter(integer2=Case(
- When(o2o_rel__integer=1, then=Value(1)),
- When(o2o_rel__integer=2, then=Value(3)),
- When(o2o_rel__integer=3, then=Value(4)),
+ When(o2o_rel__integer=1, then=1),
+ When(o2o_rel__integer=2, then=3),
+ When(o2o_rel__integer=3, then=4),
output_field=models.IntegerField(),
)).order_by('pk'),
[(1, 1), (2, 3), (3, 4), (3, 4)],
@@ -422,8 +422,8 @@ class CaseExpressionTests(TestCase):
f_plus_1=F('integer') + 1,
).filter(
integer=Case(
- When(integer2=F('integer'), then=Value(2)),
- When(integer2=F('f_plus_1'), then=Value(3)),
+ When(integer2=F('integer'), then=2),
+ When(integer2=F('f_plus_1'), then=3),
output_field=models.IntegerField(),
),
).order_by('pk'),
@@ -437,9 +437,9 @@ class CaseExpressionTests(TestCase):
f_plus_1=F('integer') + 1,
).filter(
integer2=Case(
- When(f_plus_1=3, then=Value(3)),
- When(f_plus_1=4, then=Value(4)),
- default=Value(1),
+ When(f_plus_1=3, then=3),
+ When(f_plus_1=4, then=4),
+ default=1,
output_field=models.IntegerField(),
),
).order_by('pk'),
@@ -469,8 +469,8 @@ class CaseExpressionTests(TestCase):
max=Max('fk_rel__integer'),
).filter(
integer=Case(
- When(integer2=F('min'), then=Value(2)),
- When(integer2=F('max'), then=Value(3)),
+ When(integer2=F('min'), then=2),
+ When(integer2=F('max'), then=3),
),
).order_by('pk'),
[(3, 4, 3, 4), (2, 2, 2, 3), (3, 4, 3, 4)],
@@ -483,8 +483,8 @@ class CaseExpressionTests(TestCase):
max=Max('fk_rel__integer'),
).filter(
integer=Case(
- When(max=3, then=Value(2)),
- When(max=4, then=Value(3)),
+ When(max=3, then=2),
+ When(max=4, then=3),
),
).order_by('pk'),
[(2, 3, 3), (3, 4, 4), (2, 2, 3), (3, 4, 4), (3, 3, 4)],
@@ -508,8 +508,8 @@ class CaseExpressionTests(TestCase):
def test_update_without_default(self):
CaseTestModel.objects.update(
integer2=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
),
)
self.assertQuerysetEqual(
@@ -549,8 +549,8 @@ class CaseExpressionTests(TestCase):
with self.assertRaisesMessage(FieldError, 'Joined field references are not permitted in this query'):
CaseTestModel.objects.update(
integer=Case(
- When(integer2=F('o2o_rel__integer') + 1, then=Value(2)),
- When(integer2=F('o2o_rel__integer'), then=Value(3)),
+ When(integer2=F('o2o_rel__integer') + 1, then=2),
+ When(integer2=F('o2o_rel__integer'), then=3),
output_field=models.IntegerField(),
),
)
@@ -570,8 +570,8 @@ class CaseExpressionTests(TestCase):
def test_update_big_integer(self):
CaseTestModel.objects.update(
big_integer=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
),
)
self.assertQuerysetEqual(
@@ -599,9 +599,9 @@ class CaseExpressionTests(TestCase):
def test_update_boolean(self):
CaseTestModel.objects.update(
boolean=Case(
- When(integer=1, then=Value(True)),
- When(integer=2, then=Value(True)),
- default=Value(False),
+ When(integer=1, then=True),
+ When(integer=2, then=True),
+ default=False,
),
)
self.assertQuerysetEqual(
@@ -627,8 +627,8 @@ class CaseExpressionTests(TestCase):
def test_update_date(self):
CaseTestModel.objects.update(
date=Case(
- When(integer=1, then=Value(date(2015, 1, 1))),
- When(integer=2, then=Value(date(2015, 1, 2))),
+ When(integer=1, then=date(2015, 1, 1)),
+ When(integer=2, then=date(2015, 1, 2)),
),
)
self.assertQuerysetEqual(
@@ -643,8 +643,8 @@ class CaseExpressionTests(TestCase):
def test_update_date_time(self):
CaseTestModel.objects.update(
date_time=Case(
- When(integer=1, then=Value(datetime(2015, 1, 1))),
- When(integer=2, then=Value(datetime(2015, 1, 2))),
+ When(integer=1, then=datetime(2015, 1, 1)),
+ When(integer=2, then=datetime(2015, 1, 2)),
),
)
self.assertQuerysetEqual(
@@ -659,8 +659,8 @@ class CaseExpressionTests(TestCase):
def test_update_decimal(self):
CaseTestModel.objects.update(
decimal=Case(
- When(integer=1, then=Value(Decimal('1.1'))),
- When(integer=2, then=Value(Decimal('2.2'))),
+ When(integer=1, then=Decimal('1.1')),
+ When(integer=2, then=Decimal('2.2')),
),
)
self.assertQuerysetEqual(
@@ -728,8 +728,8 @@ class CaseExpressionTests(TestCase):
def test_update_float(self):
CaseTestModel.objects.update(
float=Case(
- When(integer=1, then=Value(1.1)),
- When(integer=2, then=Value(2.2)),
+ When(integer=1, then=1.1),
+ When(integer=2, then=2.2),
),
)
self.assertQuerysetEqual(
@@ -785,8 +785,8 @@ class CaseExpressionTests(TestCase):
def test_update_null_boolean(self):
CaseTestModel.objects.update(
null_boolean=Case(
- When(integer=1, then=Value(True)),
- When(integer=2, then=Value(False)),
+ When(integer=1, then=True),
+ When(integer=2, then=False),
),
)
self.assertQuerysetEqual(
@@ -798,8 +798,8 @@ class CaseExpressionTests(TestCase):
def test_update_positive_integer(self):
CaseTestModel.objects.update(
positive_integer=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
),
)
self.assertQuerysetEqual(
@@ -811,8 +811,8 @@ class CaseExpressionTests(TestCase):
def test_update_positive_small_integer(self):
CaseTestModel.objects.update(
positive_small_integer=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
),
)
self.assertQuerysetEqual(
@@ -838,8 +838,8 @@ class CaseExpressionTests(TestCase):
def test_update_small_integer(self):
CaseTestModel.objects.update(
small_integer=Case(
- When(integer=1, then=Value(1)),
- When(integer=2, then=Value(2)),
+ When(integer=1, then=1),
+ When(integer=2, then=2),
),
)
self.assertQuerysetEqual(
@@ -936,8 +936,8 @@ class CaseExpressionTests(TestCase):
CaseTestModel.objects.update(
fk=Case(
- When(integer=1, then=Value(obj1.pk)),
- When(integer=2, then=Value(obj2.pk)),
+ When(integer=1, then=obj1.pk),
+ When(integer=2, then=obj2.pk),
),
)
self.assertQuerysetEqual(
@@ -1080,15 +1080,15 @@ class CaseDocumentationExamples(TestCase):
self.assertEqual(
Client.objects.aggregate(
regular=models.Sum(Case(
- When(account_type=Client.REGULAR, then=Value(1)),
+ When(account_type=Client.REGULAR, then=1),
output_field=models.IntegerField(),
)),
gold=models.Sum(Case(
- When(account_type=Client.GOLD, then=Value(1)),
+ When(account_type=Client.GOLD, then=1),
output_field=models.IntegerField(),
)),
platinum=models.Sum(Case(
- When(account_type=Client.PLATINUM, then=Value(1)),
+ When(account_type=Client.PLATINUM, then=1),
output_field=models.IntegerField(),
)),
),