summaryrefslogtreecommitdiff
path: root/tests/expressions_case
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2020-09-07 15:45:56 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-22 18:16:58 +0200
commit755dbf39fcdc491fe9b588358303e259c7750be4 (patch)
tree9b200ac7a26b1b0dcb065459e0eeab0ba48663ea /tests/expressions_case
parentad11f5b8c9cbfdb763e08c83170694abc0c5fc1e (diff)
downloaddjango-755dbf39fcdc491fe9b588358303e259c7750be4.tar.gz
Replaced @no_oracle skips with DatabaseFeatures.allows_group_by_lob.
Diffstat (limited to 'tests/expressions_case')
-rw-r--r--tests/expressions_case/tests.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index 54c53ef4de..ec811ca511 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -5,6 +5,7 @@ from operator import attrgetter, itemgetter
from uuid import UUID
from django.core.exceptions import FieldError
+from django.db import connection
from django.db.models import (
BinaryField, BooleanField, Case, Count, DecimalField, F,
GenericIPAddressField, IntegerField, Max, Min, Q, Sum, TextField, Value,
@@ -56,10 +57,13 @@ class CaseExpressionTests(TestCase):
O2OCaseTestModel.objects.create(o2o=o, integer=1)
FKCaseTestModel.objects.create(fk=o, integer=5)
- # GROUP BY on Oracle fails with TextField/BinaryField; see #24096.
- cls.non_lob_fields = [
+ cls.group_by_fields = [
f.name for f in CaseTestModel._meta.get_fields()
- if not (f.is_relation and f.auto_created) and not isinstance(f, (BinaryField, TextField))
+ if not (f.is_relation and f.auto_created) and
+ (
+ connection.features.allows_group_by_lob or
+ not isinstance(f, (BinaryField, TextField))
+ )
]
def test_annotate(self):
@@ -197,7 +201,7 @@ class CaseExpressionTests(TestCase):
def test_annotate_with_aggregation_in_value(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
min=Min('fk_rel__integer'),
max=Max('fk_rel__integer'),
).annotate(
@@ -212,7 +216,7 @@ class CaseExpressionTests(TestCase):
def test_annotate_with_aggregation_in_condition(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
min=Min('fk_rel__integer'),
max=Max('fk_rel__integer'),
).annotate(
@@ -227,7 +231,7 @@ class CaseExpressionTests(TestCase):
def test_annotate_with_aggregation_in_predicate(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
max=Max('fk_rel__integer'),
).annotate(
test=Case(
@@ -483,7 +487,7 @@ class CaseExpressionTests(TestCase):
def test_filter_with_aggregation_in_value(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
min=Min('fk_rel__integer'),
max=Max('fk_rel__integer'),
).filter(
@@ -498,7 +502,7 @@ class CaseExpressionTests(TestCase):
def test_filter_with_aggregation_in_condition(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
min=Min('fk_rel__integer'),
max=Max('fk_rel__integer'),
).filter(
@@ -513,7 +517,7 @@ class CaseExpressionTests(TestCase):
def test_filter_with_aggregation_in_predicate(self):
self.assertQuerysetEqual(
- CaseTestModel.objects.values(*self.non_lob_fields).annotate(
+ CaseTestModel.objects.values(*self.group_by_fields).annotate(
max=Max('fk_rel__integer'),
).filter(
integer=Case(