|
@@ -1,10 +1,12 @@
|
|
|
import decimal
|
|
|
+from unittest import mock
|
|
|
|
|
|
from django.core.management.color import no_style
|
|
|
from django.db import NotSupportedError, connection, transaction
|
|
|
from django.db.backends.base.operations import BaseDatabaseOperations
|
|
|
from django.db.models import DurationField, Value
|
|
|
from django.db.models.expressions import Col
|
|
|
+from django.db.models.lookups import Exact
|
|
|
from django.test import (
|
|
|
SimpleTestCase,
|
|
|
TestCase,
|
|
@@ -13,6 +15,7 @@ from django.test import (
|
|
|
skipIfDBFeature,
|
|
|
)
|
|
|
from django.utils import timezone
|
|
|
+from django.utils.deprecation import RemovedInDjango60Warning
|
|
|
|
|
|
from ..models import Author, Book
|
|
|
|
|
@@ -235,3 +238,24 @@ class SqlFlushTests(TransactionTestCase):
|
|
|
self.assertEqual(author.pk, 1)
|
|
|
book = Book.objects.create(author=author)
|
|
|
self.assertEqual(book.pk, 1)
|
|
|
+
|
|
|
+
|
|
|
+class DeprecationTests(TestCase):
|
|
|
+ def test_field_cast_sql_warning(self):
|
|
|
+ base_ops = BaseDatabaseOperations(connection=connection)
|
|
|
+ msg = (
|
|
|
+ "DatabaseOperations.field_cast_sql() is deprecated use "
|
|
|
+ "DatabaseOperations.lookup_cast() instead."
|
|
|
+ )
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango60Warning, msg):
|
|
|
+ base_ops.field_cast_sql("integer", "IntegerField")
|
|
|
+
|
|
|
+ def test_field_cast_sql_usage_warning(self):
|
|
|
+ compiler = Author.objects.all().query.get_compiler(connection.alias)
|
|
|
+ msg = (
|
|
|
+ "The usage of DatabaseOperations.field_cast_sql() is deprecated. Implement "
|
|
|
+ "DatabaseOperations.lookup_cast() instead."
|
|
|
+ )
|
|
|
+ with mock.patch.object(connection.ops.__class__, "field_cast_sql"):
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango60Warning, msg):
|
|
|
+ Exact("name", "book__author__name").as_sql(compiler, connection)
|