feat: initial commit

This commit is contained in:
2026-03-05 22:12:38 +01:00
commit bce762a783
380 changed files with 51955 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
"""
Pytest fixtures for the Schaeffler Automat backend test suite.
The tests in this suite are divided into:
- Unit tests (no DB / network required): excel_parser, models, schemas
- Integration tests (require running Postgres + Redis): API endpoints, tasks
Unit tests run offline; integration tests are gated by the 'integration'
pytest mark so they can be skipped in CI without infrastructure.
"""
from __future__ import annotations
import os
import sys
from pathlib import Path
import pytest
# ---------------------------------------------------------------------------
# Make sure the backend package is importable when tests are run from the
# repo root or from the backend/ directory.
# ---------------------------------------------------------------------------
BACKEND_DIR = Path(__file__).resolve().parent.parent # …/backend
if str(BACKEND_DIR) not in sys.path:
sys.path.insert(0, str(BACKEND_DIR))
# ---------------------------------------------------------------------------
# Paths
# ---------------------------------------------------------------------------
EXCEL_DIR = Path(__file__).resolve().parent.parent.parent / "Excel-Order-Lists"
EXCEL_FILES: dict[str, Path] = {
"TRB": EXCEL_DIR / "TRB_Testscope_20260128.xlsx",
"Kugellager": EXCEL_DIR / "Kugellager_Testscope_20260128.xlsx",
"CRB": EXCEL_DIR / "CRB_Testscope_20260128.xlsx",
"Gleitlager": EXCEL_DIR / "Gleitlager_Testscope_20260128.xlsx",
"SRB_TORB": EXCEL_DIR / "SRB_TORB_Testscope_20260128.xlsx",
"Linear_schiene": EXCEL_DIR / "Linear_schiene_Testscope_20260128.xlsx",
"Anschlagplatten": EXCEL_DIR / "Anschlagplatten_Testscope_20260128.xlsx",
}
# ---------------------------------------------------------------------------
# Fixtures Excel file paths
# ---------------------------------------------------------------------------
@pytest.fixture(scope="session")
def excel_dir() -> Path:
"""Return the directory that contains all sample Excel order lists."""
assert EXCEL_DIR.is_dir(), f"Excel sample directory not found: {EXCEL_DIR}"
return EXCEL_DIR
@pytest.fixture(scope="session")
def excel_paths() -> dict[str, Path]:
"""Return a mapping of category key → absolute path for each sample file."""
missing = [k for k, p in EXCEL_FILES.items() if not p.exists()]
if missing:
pytest.skip(f"Sample Excel files missing: {missing}")
return EXCEL_FILES
# ---------------------------------------------------------------------------
# Fixtures parsed Excel results (cached per test session)
# ---------------------------------------------------------------------------
@pytest.fixture(scope="session")
def parsed_excel_all(excel_paths: dict[str, Path]) -> dict:
"""Parse all 7 sample Excel files and return {category_key: ParsedExcel}."""
from app.services.excel_parser import parse_excel
return {cat: parse_excel(path) for cat, path in excel_paths.items()}
# ---------------------------------------------------------------------------
# Helpers exposed as fixtures
# ---------------------------------------------------------------------------
@pytest.fixture(scope="session")
def parsed_trb(parsed_excel_all):
return parsed_excel_all["TRB"]
@pytest.fixture(scope="session")
def parsed_kugellager(parsed_excel_all):
return parsed_excel_all["Kugellager"]
@pytest.fixture(scope="session")
def parsed_crb(parsed_excel_all):
return parsed_excel_all["CRB"]
@pytest.fixture(scope="session")
def parsed_gleitlager(parsed_excel_all):
return parsed_excel_all["Gleitlager"]
@pytest.fixture(scope="session")
def parsed_srb_torb(parsed_excel_all):
return parsed_excel_all["SRB_TORB"]
@pytest.fixture(scope="session")
def parsed_linear_schiene(parsed_excel_all):
return parsed_excel_all["Linear_schiene"]
@pytest.fixture(scope="session")
def parsed_anschlagplatten(parsed_excel_all):
return parsed_excel_all["Anschlagplatten"]