Skip to content

Commit d6fb3d5

Browse files
committed
fix: conflicts in test_admin and test_migrations
1 parent 8b81c3f commit d6fb3d5

File tree

1 file changed

+42
-13
lines changed

1 file changed

+42
-13
lines changed

t/unit/test_admin.py

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
1-
import pytest
21
from celery import uuid
2+
from django.apps import apps
33
from django.contrib import admin
44
from django.contrib.auth import get_user_model
55
from django.test import TestCase
6-
from django.urls import reverse
6+
from django.urls import (
7+
clear_url_caches,
8+
get_resolver,
9+
path,
10+
reverse,
11+
)
712

813
from django_celery_results.admin import TaskResultAdmin
914
from django_celery_results.models import TaskResult
1015

1116
User = get_user_model()
1217

1318

14-
@pytest.mark.usefixtures("depends_on_current_app")
1519
class TaskResultAdminTests(TestCase):
1620
app_name = "django_celery_results"
17-
model_name = "taskresult"
21+
model = TaskResult
1822

1923
def setUp(self):
2024
self.admin_user = User.objects.create_superuser(
@@ -26,27 +30,52 @@ def setUp(self):
2630
)
2731

2832
def test_add_view(self):
29-
url = reverse(f"admin:{self.app_name}_{self.model_name}_add")
33+
url = reverse(
34+
f"admin:{self.app_name}_{self.model._meta.model_name}_add"
35+
)
3036
response = self.client.get(url)
3137
self.assertEqual(response.status_code, 200)
3238

3339
def test_change_view(self):
3440
url = reverse(
35-
f"admin:{self.app_name}_{self.model_name}_change",
41+
f"admin:{self.app_name}_{self.model._meta.model_name}_change",
3642
args=[self.task_result.id],
3743
)
3844
response = self.client.get(url)
3945
self.assertEqual(response.status_code, 200)
4046

4147

42-
class TaskResultProxy(TaskResult):
43-
class Meta:
44-
proxy = True
45-
app_label = "django_celery_results"
48+
class TaskResultProxyAdminTests(TaskResultAdminTests):
49+
@classmethod
50+
def setUpClass(cls):
51+
super().setUpClass()
52+
53+
class TaskResultProxy(TaskResult):
54+
class Meta:
55+
proxy = True
56+
app_label = "django_celery_results"
4657

58+
cls.model = TaskResultProxy
59+
admin.site.register(TaskResultProxy, TaskResultAdmin)
4760

48-
admin.site.register(TaskResultProxy, TaskResultAdmin)
61+
# The temporary registration of admin requires refreshing the URL cache
62+
# Otherwise, it cannot be resolved
63+
default_resover = get_resolver()
64+
cls.ori_url_patterns_0 = default_resover.url_patterns[0]
65+
get_resolver().url_patterns[0] = path("admin/", admin.site.urls)
66+
clear_url_caches()
4967

68+
@classmethod
69+
def tearDownClass(cls):
70+
super().tearDownClass()
5071

51-
class TaskResultProxyAdminTests(TaskResultAdminTests):
52-
model_name = "taskresultproxy"
72+
# Unregister the proxy model
73+
admin.site.unregister(cls.model)
74+
app_config = apps.get_app_config(cls.app_name)
75+
model_name = cls.model._meta.model_name
76+
if model_name in app_config.models:
77+
del app_config.models[model_name]
78+
79+
# Restore the original URL patterns
80+
get_resolver().url_patterns[0] = cls.ori_url_patterns_0
81+
clear_url_caches()

0 commit comments

Comments
 (0)