Skip to content

Commit

Permalink
Move admin test base to a central place
Browse files Browse the repository at this point in the history
  • Loading branch information
ulgens committed Feb 1, 2025

Verified

This commit was signed with the committer’s verified signature. The key has expired.
ashleysommer Ashley Sommer
1 parent 641ec72 commit 0585d82
Showing 3 changed files with 73 additions and 42 deletions.
59 changes: 59 additions & 0 deletions src/core/testcases.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
from unittest import SkipTest

from django.test import Client, TestCase
from django.urls import reverse

from users.factories import UserFactory


class AdminTestCase(TestCase):
app_name = None
model_name = None

@classmethod
def setUpClass(cls):
if cls.__name__.endswith("AdminTestCase"):
skip_msg = f"{cls.__name__} is an abstract base class"
raise SkipTest(skip_msg)
else:
super(__class__, cls).setUpClass()

def setUp(self) -> None:
self.user = UserFactory(is_staff=True, is_superuser=True)

self.client = Client()
self.client.force_login(user=self.user)

add_viewname = f"admin:{self.app_name}_{self.model_name}_add"
self.add_url = reverse(add_viewname)

changelist_viewname = f"admin:{self.app_name}_{self.model_name}_changelist"
self.changelist_url = reverse(changelist_viewname)

def test_add_url(self):
self.assertEqual(
self.add_url,
f"/admin/{self.app_name}/{self.model_name}/add/",
)

def test_add(self):
response = self.client.get(self.add_url)

self.assertEqual(
response.status_code,
200,
)

def test_changelist_url(self):
self.assertEqual(
self.changelist_url,
f"/admin/{self.app_name}/{self.model_name}/",
)

def test_changelist(self):
response = self.client.get(self.changelist_url)

self.assertEqual(
response.status_code,
200,
)
28 changes: 7 additions & 21 deletions src/snippets/admin/tests.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
from django.test import Client, TestCase, tag
from django.urls import reverse
from django.test import tag

from users.factories import UserFactory
from core.testcases import AdminTestCase


@tag("admin", "snippet")
class SnippetAdminTest(TestCase):
def setUp(self) -> None:
self.user = UserFactory(is_staff=True, is_superuser=True)

self.client = Client()
self.client.force_login(user=self.user)

self.viewname = "admin:snippets_snippet_changelist"
self.url = reverse(self.viewname)
class SnippetsAppAdminTestCase(AdminTestCase):
app_name = "snippets"

def test_url(self):
expected_url = "/admin/snippets/snippet/"

self.assertEqual(self.url, expected_url)

def test_changelist(self):
response = self.client.get(self.url)

self.assertEqual(response.status_code, 200)
@tag("admin", "snippet")
class SnippetAdminTest(SnippetsAppAdminTestCase):
model_name = "snippet"
28 changes: 7 additions & 21 deletions src/users/admin/tests.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
from django.test import Client, TestCase, tag
from django.urls import reverse
from django.test import tag

from users.factories import UserFactory
from core.testcases import AdminTestCase


@tag("admin", "snippet")
class UserAdminTest(TestCase):
def setUp(self) -> None:
self.user = UserFactory(is_staff=True, is_superuser=True)
class UsersAppAdminTestCase(AdminTestCase):
app_name = "users"

self.client = Client()
self.client.force_login(user=self.user)

self.viewname = "admin:users_user_changelist"
self.url = reverse(self.viewname)

def test_url(self):
expected_url = "/admin/users/user/"

self.assertEqual(self.url, expected_url)

def test_changelist(self):
response = self.client.get(self.url)

self.assertEqual(response.status_code, 200)
@tag("admin", "user")
class UserAdminTest(UsersAppAdminTestCase):
model_name = "user"

0 comments on commit 0585d82

Please sign in to comment.