"""La página que queda cuando el resto de la aplicación no puede responder."""

from django.test import RequestFactory

from apps.core.server_error import page
from config import urls


def request(path='/broken', *, language=None, theme=None):
    """Un pedido con las únicas preferencias que el salvavidas puede leer."""
    result = RequestFactory().get(path)
    if language:
        result.COOKIES['app_language'] = language
    if theme:
        result.COOKIES['app_theme'] = theme
    return result


def test_server_error_is_a_standalone_recovery_page():
    response = page(request('/broken?from=test'))
    document = response.content.decode()

    assert response.status_code == 500
    assert response.headers['Cache-Control'] == 'no-store'
    assert 'We couldn&#x27;t load this page' in document
    assert 'href="/broken?from=test"' in document
    assert 'data-page=' not in document
    assert '/static/' not in document
    assert urls.handler500 == 'apps.core.server_error.page'


def test_server_error_respects_safe_cookie_preferences_without_a_session():
    response = page(request(language='es-ar', theme='dark'))
    document = response.content.decode()

    assert '<html lang="es-ar" class="dark">' in document
    assert 'No pudimos cargar esta página' in document
    assert 'Probá de nuevo en un momento.' in document


def test_unknown_cookie_preferences_fall_back_to_english_and_system_theme():
    response = page(request(language='invented', theme='invented'))
    document = response.content.decode()

    assert '<html lang="en" class="">' in document
    assert 'data-theme="system"' in document
