38 lines
1 KiB
Python
38 lines
1 KiB
Python
"""admin tests"""
|
|
from typing import Callable
|
|
|
|
from django.shortcuts import reverse
|
|
from django.test import Client, TestCase
|
|
from django.urls.exceptions import NoReverseMatch
|
|
|
|
from passbook.admin.urls import urlpatterns
|
|
from passbook.core.models import User
|
|
|
|
|
|
class TestAdmin(TestCase):
|
|
"""Generic admin tests"""
|
|
|
|
def setUp(self):
|
|
self.user = User.objects.create_superuser(username="test")
|
|
self.client = Client()
|
|
self.client.force_login(self.user)
|
|
|
|
|
|
def generic_view_tester(view_name: str) -> Callable:
|
|
"""This is used instead of subTest for better visibility"""
|
|
|
|
def tester(self: TestAdmin):
|
|
try:
|
|
full_url = reverse(f"passbook_admin:{view_name}")
|
|
response = self.client.get(full_url)
|
|
self.assertTrue(response.status_code < 500)
|
|
except NoReverseMatch:
|
|
pass
|
|
|
|
return tester
|
|
|
|
|
|
for url in urlpatterns:
|
|
method_name = url.name.replace("-", "_")
|
|
setattr(TestAdmin, f"test_{method_name}", generic_view_tester(url.name))
|