diff options
| author | Josh Smeaton <josh.smeaton@gmail.com> | 2015-01-27 13:40:32 +1100 |
|---|---|---|
| committer | Josh Smeaton <josh.smeaton@gmail.com> | 2015-01-28 10:59:30 +1100 |
| commit | 7171bf755b0c4be85ddbcc164eaf87164c131021 (patch) | |
| tree | fc60ddab21366ac3265300a4c999fc0188dd900e /tests | |
| parent | f218a2ff455b5f7391dd38038994f2c5f8b0eca1 (diff) | |
Refs #14030 -- Added repr methods to all expressions
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/tests.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 3c508b8520..f7e8cae856 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -6,10 +6,17 @@ import uuid from django.core.exceptions import FieldError from django.db import connection, transaction, DatabaseError -from django.db.models import F, Value, TimeField, UUIDField +from django.db.models import TimeField, UUIDField +from django.db.models.aggregates import Avg, Count, Max, Min, StdDev, Sum, Variance +from django.db.models.expressions import ( + Case, Col, Date, DateTime, F, Func, OrderBy, + Random, RawSQL, Ref, Value, When +) +from django.db.models.functions import Coalesce, Concat, Length, Lower, Substr, Upper from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature from django.test.utils import Approximate from django.utils import six +from django.utils.timezone import utc from .models import Company, Employee, Number, Experiment, Time, UUID @@ -812,3 +819,40 @@ class ValueTests(TestCase): UUID.objects.create() UUID.objects.update(uuid=Value(uuid.UUID('12345678901234567890123456789012'), output_field=UUIDField())) self.assertEqual(UUID.objects.get().uuid, uuid.UUID('12345678901234567890123456789012')) + + +class ReprTests(TestCase): + + def test_expressions(self): + self.assertEqual( + repr(Case(When(a=1))), + "<Case: CASE WHEN <Q: (AND: ('a', 1))> THEN Value(None), ELSE Value(None)>" + ) + self.assertEqual(repr(Col('alias', 'field')), "Col(alias, field)") + self.assertEqual(repr(Date('published', 'exact')), "Date(published, exact)") + self.assertEqual(repr(DateTime('published', 'exact', utc)), "DateTime(published, exact, UTC)") + self.assertEqual(repr(F('published')), "F(published)") + self.assertEqual(repr(F('cost') + F('tax')), "<Expression: F(cost) + F(tax)>") + self.assertEqual(repr(Func('published', function='TO_CHAR')), "Func(F(published), function=TO_CHAR)") + self.assertEqual(repr(OrderBy(Value(1))), 'OrderBy(Value(1), descending=False)') + self.assertEqual(repr(Random()), "Random()") + self.assertEqual(repr(RawSQL('table.col', [])), "RawSQL(table.col, [])") + self.assertEqual(repr(Ref('sum_cost', Sum('cost'))), "Ref(sum_cost, Sum(F(cost)))") + self.assertEqual(repr(Value(1)), "Value(1)") + + def test_functions(self): + self.assertEqual(repr(Coalesce('a', 'b')), "Coalesce(F(a), F(b))") + self.assertEqual(repr(Concat('a', 'b')), "Concat(ConcatPair(F(a), F(b)))") + self.assertEqual(repr(Length('a')), "Length(F(a))") + self.assertEqual(repr(Lower('a')), "Lower(F(a))") + self.assertEqual(repr(Substr('a', 1, 3)), "Substr(F(a), Value(1), Value(3))") + self.assertEqual(repr(Upper('a')), "Upper(F(a))") + + def test_aggregates(self): + self.assertEqual(repr(Avg('a')), "Avg(F(a))") + self.assertEqual(repr(Count('a')), "Count(F(a), distinct=False)") + self.assertEqual(repr(Max('a')), "Max(F(a))") + self.assertEqual(repr(Min('a')), "Min(F(a))") + self.assertEqual(repr(StdDev('a')), "StdDev(F(a), sample=False)") + self.assertEqual(repr(Sum('a')), "Sum(F(a))") + self.assertEqual(repr(Variance('a', sample=True)), "Variance(F(a), sample=True)") |
