50 lines
2.2 KiB
Python
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
|