38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.0 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))
 |