Ctrl K
ComunidadGuías…

backend/tests/test_foreign_track_scan_model.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""Tests for the foreign_track_scan ORM model."""

import os

import pytest


@pytest.fixture()
def app(tmp_path):
    """Create a Flask app with an isolated SQLite DB for testing."""
    from app import create_app
    from config import reload_settings

    db_path = str(tmp_path / "test.db")
    os.environ["SUBLARR_DB_PATH"] = db_path
    os.environ["SUBLARR_API_KEY"] = ""
    os.environ["SUBLARR_LOG_LEVEL"] = "ERROR"

    reload_settings()

    application = create_app(testing=True)
    application.config["TESTING"] = True

    with application.app_context():
        yield application

    os.environ.pop("SUBLARR_DB_PATH", None)
    os.environ.pop("SUBLARR_API_KEY", None)
    os.environ.pop("SUBLARR_LOG_LEVEL", None)


def test_model_defines_the_expected_columns(app):
    from db.models.foreign_tracks import ForeignTrackScan

    cols = set(ForeignTrackScan.__table__.columns.keys())
    assert cols == {
        "id",
        "path",
        "size_bytes",
        "mtime",
        "state",
        "foreign_langs",
        "track_count",
        "probed_at",
        "processed_at",
        "error",
        "error_class",
        "attempts",
        "generation",
        "track_verdicts",  # 1.15.0 per-track verdicts
    }


def test_path_is_unique(app):
    from db.models.foreign_tracks import ForeignTrackScan

    assert ForeignTrackScan.__table__.columns["path"].unique is True


def test_state_constants_cover_the_graph(app):
    from db.models import foreign_tracks as ft

    assert ft.STATE_PENDING == "pending"
    assert ft.STATE_CLEAN == "clean"
    assert ft.STATE_AFFECTED == "affected"
    assert ft.STATE_STRIPPING == "stripping"
    assert ft.STATE_STRIPPED == "stripped"
    assert ft.STATE_FAILED == "failed"