Files
spiele-redaktion/tests/_neuheiten.py

78 lines
2.7 KiB
Python

"""Zugriff auf die neuheiten-Plugin-Module über den vom Plugin-Loader
verwendeten Modulnamen (`spiele_redaktion_plugins.neuheiten`).
Der Kern teilt sich eine SQLAlchemy-MetaData; deshalb darf es pro Prozess
nur eine Modul-Identität geben. Tests importieren das Plugin daher über
diesen Helper statt direkt über `plugins.neuheiten`.
"""
from __future__ import annotations
import sys
from pathlib import Path
from redaktionskern.plugin_loader import discover_plugins
_PROJEKT_WURZEL = Path(__file__).resolve().parents[1]
if "spiele_redaktion_plugins.neuheiten" not in sys.modules:
discover_plugins(
_PROJEKT_WURZEL / "plugins",
entry_point_group="spiele_redaktion.tests.keine_entry_points",
)
_neuheiten = sys.modules["spiele_redaktion_plugins.neuheiten"]
bgg = _neuheiten.bgg
sync_modul = _neuheiten.sync
models = _neuheiten.models
BggClient = bgg.BggClient
BggFehler = bgg.BggFehler
BggAuthFehler = bgg.BggAuthFehler
MELDUNG_401 = bgg.MELDUNG_401
SuchTreffer = bgg.SuchTreffer
BggSpiel = bgg.BggSpiel
parse_suche = bgg.parse_suche
parse_things = bgg.parse_things
SyncService = sync_modul.SyncService
SyncErgebnis = sync_modul.SyncErgebnis
ist_moeglicher_prototyp = sync_modul.ist_moeglicher_prototyp
speichere_oder_aktualisiere = sync_modul.speichere_oder_aktualisiere
Neuheit = models.Neuheit
STATUS_NEUHEIT = models.STATUS_NEUHEIT
# ---------- Web-Quellen (Adapter + Sync-Orchestrierung) ----------
quellen_basis = _neuheiten.quellen.basis
quellen_sync_modul = _neuheiten.quellen_sync
models = _neuheiten.models # neu mit QuellenStatus
USER_AGENT = quellen_basis.USER_AGENT
QuellenAdapter = quellen_basis.QuellenAdapter
QuellenFehler = quellen_basis.QuellenFehler
QuellenTreffer = quellen_basis.QuellenTreffer
SammelErgebnis = quellen_basis.SammelErgebnis
WebQuellenClient = quellen_basis.WebQuellenClient
jahr_aus_datumsangabe = quellen_basis.jahr_aus_datumsangabe
titel_aehnlichkeit = quellen_basis.titel_aehnlichkeit
titel_normalisieren = quellen_basis.titel_normalisieren
SpielboxQuelle = _neuheiten.quellen.spielbox.SpielboxQuelle
BrettspielboxQuelle = _neuheiten.quellen.brettspielbox.BrettspielboxQuelle
SpielEssenQuelle = _neuheiten.quellen.spielessen.SpielEssenQuelle
CliquenabendQuelle = _neuheiten.quellen.cliquenabend.CliquenabendQuelle
ADAPTER_KLASSEN = quellen_sync_modul.ADAPTER_KLASSEN
WebQuellenSyncService = quellen_sync_modul.WebQuellenSyncService
QuellenLaufZeile = quellen_sync_modul.QuellenLaufZeile
quelle_aktiv = quellen_sync_modul.quelle_aktiv
TITEL_FUZZY_SCHWELLE = quellen_sync_modul.TITEL_FUZZY_SCHWELLE
QuellenStatus = models.QuellenStatus
def sys_modules_plugin():
"""Die geladene NeuheitenPlugin-Instanz (für Migrationen im Test)."""
return sys.modules["spiele_redaktion_plugins.neuheiten"].plugin