From 8b1ff0da4b162e87edebd94e61f2cd153e9e159d Mon Sep 17 00:00:00 2001 From: David Wobrock Date: Tue, 18 Apr 2023 10:20:32 +0200 Subject: Refs #16055 -- Deprecated get_joining_columns()/get_reverse_joining_columns() methods. --- tests/foreign_object/tests.py | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'tests/foreign_object') diff --git a/tests/foreign_object/tests.py b/tests/foreign_object/tests.py index 3c06f07e06..c9e8da5792 100644 --- a/tests/foreign_object/tests.py +++ b/tests/foreign_object/tests.py @@ -8,6 +8,7 @@ from django.db import models from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature from django.test.utils import isolate_apps from django.utils import translation +from django.utils.deprecation import RemovedInDjango60Warning from .models import ( Article, @@ -687,3 +688,49 @@ class TestCachedPathInfo(TestCase): foreign_object_restored = pickle.loads(pickle.dumps(foreign_object)) self.assertIn("path_infos", foreign_object_restored.__dict__) self.assertIn("reverse_path_infos", foreign_object_restored.__dict__) + + +class GetJoiningDeprecationTests(TestCase): + def test_foreign_object_get_joining_columns_warning(self): + msg = ( + "ForeignObject.get_joining_columns() is deprecated. Use " + "get_joining_fields() instead." + ) + with self.assertWarnsMessage(RemovedInDjango60Warning, msg): + Membership.person.field.get_joining_columns() + + def test_foreign_object_get_reverse_joining_columns_warning(self): + msg = ( + "ForeignObject.get_reverse_joining_columns() is deprecated. Use " + "get_reverse_joining_fields() instead." + ) + with self.assertWarnsMessage(RemovedInDjango60Warning, msg): + Membership.person.field.get_reverse_joining_columns() + + def test_foreign_object_rel_get_joining_columns_warning(self): + msg = ( + "ForeignObjectRel.get_joining_columns() is deprecated. Use " + "get_joining_fields() instead." + ) + with self.assertWarnsMessage(RemovedInDjango60Warning, msg): + Membership.person.field.remote_field.get_joining_columns() + + def test_join_get_joining_columns_warning(self): + class CustomForeignKey(models.ForeignKey): + def __getattribute__(self, attr): + if attr == "get_joining_fields": + raise AttributeError + return super().__getattribute__(attr) + + class CustomParent(models.Model): + value = models.CharField(max_length=255) + + class CustomChild(models.Model): + links = CustomForeignKey(CustomParent, models.CASCADE) + + msg = ( + "The usage of get_joining_columns() in Join is deprecated. Implement " + "get_joining_fields() instead." + ) + with self.assertWarnsMessage(RemovedInDjango60Warning, msg): + CustomChild.objects.filter(links__value="value") -- cgit v1.3