36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
import tempfile
|
|
|
|
import pytest
|
|
from django.core.management import call_command
|
|
from django.test import override_settings
|
|
|
|
|
|
@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
|