Files
2022-11-08 21:19:51 +01:00

45 lines
1.4 KiB
Python

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)