init
This commit is contained in:
44
backend-django/backend/tests/views/test_utils.py
Normal file
44
backend-django/backend/tests/views/test_utils.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from django.urls import reverse
|
||||
from typing import Any
|
||||
from unittest import mock
|
||||
|
||||
|
||||
def disable_gestionnaire_permission(type):
|
||||
"""
|
||||
Utilise "mock" pour ignorer le gestionnaire de permissions dans la vue.
|
||||
TODO trouver un mécanisme de mock plus précis
|
||||
|
||||
:param type: le type de la vue
|
||||
:type type: class:`ModelViewSet` par exemple
|
||||
|
||||
:return: résultat du mock
|
||||
:rtype: voir mock
|
||||
"""
|
||||
return mock.patch.object(type, 'permission_classes', [p for p in type.permission_classes if p.__name__ != 'GestionnairePermission'])
|
||||
|
||||
|
||||
def api_url(basename: str, pk: Any = None) -> str:
|
||||
"""
|
||||
renvoie l'URL selon qu'on a besoin d'un ID ou non
|
||||
nécessite l'utilisation de SimpleRouter ou DefaultRouter (voir urls.py)
|
||||
|
||||
:param basename: valeur de "basename"
|
||||
:type basename: str
|
||||
|
||||
:param pk: valeur qui permet de savoir s'il s'agit d'une URL "list" ou "detail" (voir https://www.django-rest-framework.org/api-guide/routers/#simplerouter)
|
||||
:type pk: Any
|
||||
|
||||
:return: URL
|
||||
:rtype: str
|
||||
"""
|
||||
return reverse(f'{basename}-list') if pk is None else reverse(f'{basename}-detail', args=[pk])
|
||||
|
||||
|
||||
class TestUtilsMixin:
|
||||
"""
|
||||
mixin à ajouter pour les tests
|
||||
"""
|
||||
|
||||
def _api_url(self, pk: Any = None) -> str:
|
||||
""" voir fonction "api_url", nécessite un champ "basename" pour remplir le paramètre """
|
||||
return api_url(self.basename, pk)
|
||||
Reference in New Issue
Block a user