From ea3beb4f5a61870c87ba028369de4d2c2f316ad0 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Tue, 16 Jun 2020 10:01:34 +0200 Subject: Refs #30446 -- Defined default output_field of text database functions. This prevented the default behavior of BaseExpression._resolve_output_field from error'ing out when such functions accepted both expressions from mixed types (e.g. SubStr(CharField, IntegerField, IntegerField)). --- tests/db_functions/text/test_left.py | 4 ++-- tests/db_functions/text/test_pad.py | 4 ++-- tests/db_functions/text/test_repeat.py | 6 +++--- tests/db_functions/text/test_right.py | 4 ++-- tests/db_functions/text/test_substr.py | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) (limited to 'tests/db_functions') diff --git a/tests/db_functions/text/test_left.py b/tests/db_functions/text/test_left.py index 5bb3d6c4fa..873bbf859b 100644 --- a/tests/db_functions/text/test_left.py +++ b/tests/db_functions/text/test_left.py @@ -1,4 +1,4 @@ -from django.db.models import CharField, Value +from django.db.models import IntegerField, Value from django.db.models.functions import Left, Lower from django.test import TestCase @@ -23,5 +23,5 @@ class LeftTests(TestCase): Author.objects.annotate(raises=Left('name', 0)) def test_expressions(self): - authors = Author.objects.annotate(name_part=Left('name', Value(3), output_field=CharField())) + authors = Author.objects.annotate(name_part=Left('name', Value(3, output_field=IntegerField()))) self.assertQuerysetEqual(authors.order_by('name'), ['Joh', 'Rho'], lambda a: a.name_part) diff --git a/tests/db_functions/text/test_pad.py b/tests/db_functions/text/test_pad.py index 88309e5641..17c33a30d8 100644 --- a/tests/db_functions/text/test_pad.py +++ b/tests/db_functions/text/test_pad.py @@ -1,5 +1,5 @@ from django.db import connection -from django.db.models import CharField, Value +from django.db.models import Value from django.db.models.functions import Length, LPad, RPad from django.test import TestCase @@ -42,7 +42,7 @@ class PadTests(TestCase): def test_combined_with_length(self): Author.objects.create(name='Rhonda', alias='john_smith') Author.objects.create(name='♥♣♠', alias='bytes') - authors = Author.objects.annotate(filled=LPad('name', Length('alias'), output_field=CharField())) + authors = Author.objects.annotate(filled=LPad('name', Length('alias'))) self.assertQuerysetEqual( authors.order_by('alias'), [' ♥♣♠', ' Rhonda'], diff --git a/tests/db_functions/text/test_repeat.py b/tests/db_functions/text/test_repeat.py index d302e6da28..c1e136c8f0 100644 --- a/tests/db_functions/text/test_repeat.py +++ b/tests/db_functions/text/test_repeat.py @@ -1,5 +1,5 @@ from django.db import connection -from django.db.models import CharField, Value +from django.db.models import Value from django.db.models.functions import Length, Repeat from django.test import TestCase @@ -13,8 +13,8 @@ class RepeatTests(TestCase): tests = ( (Repeat('name', 0), ''), (Repeat('name', 2), 'JohnJohn'), - (Repeat('name', Length('alias'), output_field=CharField()), 'JohnJohnJohn'), - (Repeat(Value('x'), 3, output_field=CharField()), 'xxx'), + (Repeat('name', Length('alias')), 'JohnJohnJohn'), + (Repeat(Value('x'), 3), 'xxx'), (Repeat('name', None), none_value), (Repeat('goes_by', 1), none_value), ) diff --git a/tests/db_functions/text/test_right.py b/tests/db_functions/text/test_right.py index 6dcbcc18f5..ab29cb9456 100644 --- a/tests/db_functions/text/test_right.py +++ b/tests/db_functions/text/test_right.py @@ -1,4 +1,4 @@ -from django.db.models import CharField, Value +from django.db.models import IntegerField, Value from django.db.models.functions import Lower, Right from django.test import TestCase @@ -23,5 +23,5 @@ class RightTests(TestCase): Author.objects.annotate(raises=Right('name', 0)) def test_expressions(self): - authors = Author.objects.annotate(name_part=Right('name', Value(3), output_field=CharField())) + authors = Author.objects.annotate(name_part=Right('name', Value(3, output_field=IntegerField()))) self.assertQuerysetEqual(authors.order_by('name'), ['ith', 'nda'], lambda a: a.name_part) diff --git a/tests/db_functions/text/test_substr.py b/tests/db_functions/text/test_substr.py index 5cc12c0288..35af5656ef 100644 --- a/tests/db_functions/text/test_substr.py +++ b/tests/db_functions/text/test_substr.py @@ -1,4 +1,4 @@ -from django.db.models import CharField, Value as V +from django.db.models import Value as V from django.db.models.functions import Lower, StrIndex, Substr, Upper from django.test import TestCase @@ -45,7 +45,7 @@ class SubstrTests(TestCase): def test_expressions(self): Author.objects.create(name='John Smith', alias='smithj') Author.objects.create(name='Rhonda') - substr = Substr(Upper('name'), StrIndex('name', V('h')), 5, output_field=CharField()) + substr = Substr(Upper('name'), StrIndex('name', V('h')), 5) authors = Author.objects.annotate(name_part=substr) self.assertQuerysetEqual( authors.order_by('name'), ['HN SM', 'HONDA'], -- cgit v1.2.1