From 42d83c90675004bda8154689393586778ff39495 Mon Sep 17 00:00:00 2001 From: a <455919189@qq.com> Date: Tue, 17 May 2022 21:05:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'test/Django-2.1.15/tests/absolute=5Furl=5Foverrides'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/absolute_url_overrides/__init__.py | Bin 0 -> 1024 bytes .../tests/absolute_url_overrides/tests.py | 58 ++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 test/Django-2.1.15/tests/absolute_url_overrides/__init__.py create mode 100644 test/Django-2.1.15/tests/absolute_url_overrides/tests.py diff --git a/test/Django-2.1.15/tests/absolute_url_overrides/__init__.py b/test/Django-2.1.15/tests/absolute_url_overrides/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..06d7405020018ddf3cacee90fd4af10487da3d20 GIT binary patch literal 1024 ScmZQz7zLvtFd70QH3R?z00031 literal 0 HcmV?d00001 diff --git a/test/Django-2.1.15/tests/absolute_url_overrides/tests.py b/test/Django-2.1.15/tests/absolute_url_overrides/tests.py new file mode 100644 index 0000000..6879283 --- /dev/null +++ b/test/Django-2.1.15/tests/absolute_url_overrides/tests.py @@ -0,0 +1,58 @@ +from django.db import models +from django.test import SimpleTestCase +from django.test.utils import isolate_apps + + +@isolate_apps('absolute_url_overrides') +class AbsoluteUrlOverrideTests(SimpleTestCase): + + def test_get_absolute_url(self): + """ + get_absolute_url() functions as a normal method. + """ + def get_absolute_url(o): + return '/test-a/%s/' % o.pk + TestA = self._create_model_class('TestA', get_absolute_url) + + self.assertTrue(hasattr(TestA, 'get_absolute_url')) + obj = TestA(pk=1, name='Foo') + self.assertEqual('/test-a/%s/' % obj.pk, obj.get_absolute_url()) + + def test_override_get_absolute_url(self): + """ + ABSOLUTE_URL_OVERRIDES should override get_absolute_url(). + """ + def get_absolute_url(o): + return '/test-b/%s/' % o.pk + with self.settings( + ABSOLUTE_URL_OVERRIDES={ + 'absolute_url_overrides.testb': lambda o: '/overridden-test-b/%s/' % o.pk, + }, + ): + TestB = self._create_model_class('TestB', get_absolute_url) + obj = TestB(pk=1, name='Foo') + self.assertEqual('/overridden-test-b/%s/' % obj.pk, obj.get_absolute_url()) + + def test_insert_get_absolute_url(self): + """ + ABSOLUTE_URL_OVERRIDES should work even if the model doesn't have a + get_absolute_url() method. + """ + with self.settings( + ABSOLUTE_URL_OVERRIDES={ + 'absolute_url_overrides.testc': lambda o: '/test-c/%s/' % o.pk, + }, + ): + TestC = self._create_model_class('TestC') + obj = TestC(pk=1, name='Foo') + self.assertEqual('/test-c/%s/' % obj.pk, obj.get_absolute_url()) + + def _create_model_class(self, class_name, get_absolute_url_method=None): + attrs = { + 'name': models.CharField(max_length=50), + '__module__': 'absolute_url_overrides', + } + if get_absolute_url_method: + attrs['get_absolute_url'] = get_absolute_url_method + + return type(class_name, (models.Model,), attrs)