diff options
Diffstat (limited to 'tests/postgres_tests')
| -rw-r--r-- | tests/postgres_tests/test_aggregates.py | 12 | ||||
| -rw-r--r-- | tests/postgres_tests/test_constraints.py | 27 | ||||
| -rw-r--r-- | tests/postgres_tests/test_indexes.py | 20 |
3 files changed, 5 insertions, 54 deletions
diff --git a/tests/postgres_tests/test_aggregates.py b/tests/postgres_tests/test_aggregates.py index 7e1e16d0c0..b72310bdf1 100644 --- a/tests/postgres_tests/test_aggregates.py +++ b/tests/postgres_tests/test_aggregates.py @@ -1,4 +1,4 @@ -from django.db import connection, transaction +from django.db import transaction from django.db.models import ( CharField, F, @@ -13,7 +13,6 @@ from django.db.models import ( ) from django.db.models.fields.json import KeyTextTransform, KeyTransform from django.db.models.functions import Cast, Concat, LPad, Substr -from django.test import skipUnlessDBFeature from django.test.utils import Approximate from django.utils import timezone @@ -95,9 +94,8 @@ class TestGeneralAggregate(PostgreSQLTestCase): BoolOr("boolean_field"), JSONBAgg("integer_field"), StringAgg("char_field", delimiter=";"), + BitXor("integer_field"), ] - if connection.features.has_bit_xor: - tests.append(BitXor("integer_field")) for aggregation in tests: with self.subTest(aggregation=aggregation): # Empty result with non-execution optimization. @@ -133,9 +131,8 @@ class TestGeneralAggregate(PostgreSQLTestCase): StringAgg("char_field", delimiter=";", default=Value("<empty>")), "<empty>", ), + (BitXor("integer_field", default=0), 0), ] - if connection.features.has_bit_xor: - tests.append((BitXor("integer_field", default=0), 0)) for aggregation, expected_result in tests: with self.subTest(aggregation=aggregation): # Empty result with non-execution optimization. @@ -348,7 +345,6 @@ class TestGeneralAggregate(PostgreSQLTestCase): ) self.assertEqual(values, {"bitor": 0}) - @skipUnlessDBFeature("has_bit_xor") def test_bit_xor_general(self): AggregateTestModel.objects.create(integer_field=3) values = AggregateTestModel.objects.filter( @@ -356,14 +352,12 @@ class TestGeneralAggregate(PostgreSQLTestCase): ).aggregate(bitxor=BitXor("integer_field")) self.assertEqual(values, {"bitxor": 2}) - @skipUnlessDBFeature("has_bit_xor") def test_bit_xor_on_only_true_values(self): values = AggregateTestModel.objects.filter( integer_field=1, ).aggregate(bitxor=BitXor("integer_field")) self.assertEqual(values, {"bitxor": 1}) - @skipUnlessDBFeature("has_bit_xor") def test_bit_xor_on_only_false_values(self): values = AggregateTestModel.objects.filter( integer_field=0, diff --git a/tests/postgres_tests/test_constraints.py b/tests/postgres_tests/test_constraints.py index 3cc76cdcfe..770d4b1702 100644 --- a/tests/postgres_tests/test_constraints.py +++ b/tests/postgres_tests/test_constraints.py @@ -4,7 +4,7 @@ from unittest import mock from django.contrib.postgres.indexes import OpClass from django.core.checks import Error from django.core.exceptions import ValidationError -from django.db import IntegrityError, NotSupportedError, connection, transaction +from django.db import IntegrityError, connection, transaction from django.db.models import ( CASCADE, CharField, @@ -997,7 +997,6 @@ class ExclusionConstraintTests(PostgreSQLTestCase): RangesModel.objects.create(ints=(10, 19)) RangesModel.objects.create(ints=(51, 60)) - @skipUnlessDBFeature("supports_covering_spgist_indexes") def test_range_adjacent_spgist_include(self): constraint_name = "ints_adjacent_spgist_include" self.assertNotIn( @@ -1034,7 +1033,6 @@ class ExclusionConstraintTests(PostgreSQLTestCase): editor.add_constraint(RangesModel, constraint) self.assertIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) - @skipUnlessDBFeature("supports_covering_spgist_indexes") def test_range_adjacent_spgist_include_condition(self): constraint_name = "ints_adjacent_spgist_include_condition" self.assertNotIn( @@ -1067,7 +1065,6 @@ class ExclusionConstraintTests(PostgreSQLTestCase): editor.add_constraint(RangesModel, constraint) self.assertIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) - @skipUnlessDBFeature("supports_covering_spgist_indexes") def test_range_adjacent_spgist_include_deferrable(self): constraint_name = "ints_adjacent_spgist_include_deferrable" self.assertNotIn( @@ -1084,27 +1081,6 @@ class ExclusionConstraintTests(PostgreSQLTestCase): editor.add_constraint(RangesModel, constraint) self.assertIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) - def test_spgist_include_not_supported(self): - constraint_name = "ints_adjacent_spgist_include_not_supported" - constraint = ExclusionConstraint( - name=constraint_name, - expressions=[("ints", RangeOperators.ADJACENT_TO)], - index_type="spgist", - include=["id"], - ) - msg = ( - "Covering exclusion constraints using an SP-GiST index require " - "PostgreSQL 14+." - ) - with connection.schema_editor() as editor: - with mock.patch( - "django.db.backends.postgresql.features.DatabaseFeatures." - "supports_covering_spgist_indexes", - False, - ): - with self.assertRaisesMessage(NotSupportedError, msg): - editor.add_constraint(RangesModel, constraint) - def test_range_adjacent_opclass(self): constraint_name = "ints_adjacent_opclass" self.assertNotIn( @@ -1187,7 +1163,6 @@ class ExclusionConstraintTests(PostgreSQLTestCase): editor.add_constraint(RangesModel, constraint) self.assertIn(constraint_name, self.get_constraints(RangesModel._meta.db_table)) - @skipUnlessDBFeature("supports_covering_spgist_indexes") def test_range_adjacent_spgist_opclass_include(self): constraint_name = "ints_adjacent_spgist_opclass_include" self.assertNotIn( diff --git a/tests/postgres_tests/test_indexes.py b/tests/postgres_tests/test_indexes.py index 8a7ee39a76..f98d03c6c1 100644 --- a/tests/postgres_tests/test_indexes.py +++ b/tests/postgres_tests/test_indexes.py @@ -1,5 +1,3 @@ -from unittest import mock - from django.contrib.postgres.indexes import ( BloomIndex, BrinIndex, @@ -11,10 +9,9 @@ from django.contrib.postgres.indexes import ( PostgresIndex, SpGistIndex, ) -from django.db import NotSupportedError, connection +from django.db import connection from django.db.models import CharField, F, Index, Q from django.db.models.functions import Cast, Collate, Length, Lower -from django.test import skipUnlessDBFeature from django.test.utils import register_lookup from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase @@ -640,7 +637,6 @@ class SchemaTests(PostgreSQLTestCase): index_name, self.get_constraints(TextFieldModel._meta.db_table) ) - @skipUnlessDBFeature("supports_covering_spgist_indexes") def test_spgist_include(self): index_name = "scene_spgist_include_setting" index = SpGistIndex(name=index_name, fields=["scene"], include=["setting"]) @@ -654,20 +650,6 @@ class SchemaTests(PostgreSQLTestCase): editor.remove_index(Scene, index) self.assertNotIn(index_name, self.get_constraints(Scene._meta.db_table)) - def test_spgist_include_not_supported(self): - index_name = "spgist_include_exception" - index = SpGistIndex(fields=["scene"], name=index_name, include=["setting"]) - msg = "Covering SP-GiST indexes require PostgreSQL 14+." - with self.assertRaisesMessage(NotSupportedError, msg): - with mock.patch( - "django.db.backends.postgresql.features.DatabaseFeatures." - "supports_covering_spgist_indexes", - False, - ): - with connection.schema_editor() as editor: - editor.add_index(Scene, index) - self.assertNotIn(index_name, self.get_constraints(Scene._meta.db_table)) - def test_custom_suffix(self): class CustomSuffixIndex(PostgresIndex): suffix = "sfx" |
