Files
crochet/conftest.py
T
pablo 4b0d404116
CI / test (push) Successful in 2m13s
CI / build (push) Successful in 55s
feat: included 2FA and lots of feature from django-htmx-template
2026-09-16 13:20:44 +02:00

50 lines
2.2 KiB
Python

import tempfile
import pytest
from django.core.cache import cache
from django.core.management import call_command
from django.test import override_settings
@pytest.fixture(autouse=True)
def clear_ratelimit_cache():
"""django-ratelimit (ver LOGIN_RATE/REGISTER_RATE/PASSWORD_RESET_RATE en
crochet/views.py) cuenta peticiones en el cache framework de Django, que
-a diferencia de la base de datos- no se resetea solo entre tests; sin
esto, tests de distintos módulos que llaman a la misma vista (login,
registro...) irían sumando al mismo contador y algún test acabaría
recibiendo un 403 por límite alcanzado en vez del resultado que espera,
según en qué orden se ejecuten."""
cache.clear()
yield
@pytest.fixture(scope='session', autouse=True)
def collected_static_files():
"""{% static %} (usado en pattern.html/pattern_detail.html) necesita el
manifest que genera collectstatic cuando STORAGES['staticfiles'] es
CompressedManifestStaticFilesStorage (ver base.py); sin esto,
cualquier test que renderice una de esas plantillas falla con
"Missing staticfiles manifest entry". Se recopila a un directorio
temporal (no al STATIC_ROOT real del proyecto) para no depender de ―ni
tocar― lo que ya haya en config/static/."""
with tempfile.TemporaryDirectory() as static_root:
with override_settings(STATIC_ROOT=static_root):
call_command('collectstatic', interactive=False, verbosity=0)
yield
@pytest.fixture(scope='session', autouse=True)
def isolated_media_root():
"""Los tests que suben imágenes (PatternImage, portada de Pattern...)
escriben de verdad en MEDIA_ROOT; sin aislarlo, se acumulan en la
carpeta media/ real del proyecto de una ejecución a otra, y como
cover_image.py guarda cada variante con un nombre fijo (thumbnail.jpg,
large.jpg) dentro de una carpeta por mes, esas sobras podían chocar con
los nombres que espera un test concreto (ver
PatternCoverImageUploadViewTests) y hacerlo fallar según lo que hubiera
quedado de ejecuciones anteriores."""
with tempfile.TemporaryDirectory() as media_root:
with override_settings(MEDIA_ROOT=media_root):
yield