test: add end to end coverage

This commit is contained in:
2026-09-25 11:13:18 +08:00
parent d6203cc7ea
commit 120dccf028
6 changed files with 362 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
import os
from pathlib import Path
import pytest
from sqlalchemy.orm import sessionmaker
from wisegrade.config import get_settings
from wisegrade.db import Base, engine_for
from wisegrade.seed import seed_initial
from wisegrade import models # noqa: F401
@pytest.fixture
def environment(tmp_path, monkeypatch):
inbox = tmp_path / "inbox"
inbox.mkdir()
monkeypatch.setenv("INBOX_PATH", str(inbox))
monkeypatch.setenv("PROCESSED_PATH", str(tmp_path / "processed"))
monkeypatch.setenv("EXPORTS_PATH", str(tmp_path / "exports"))
monkeypatch.setenv("WISEGRADE_SECRET_KEY", "test-only-secret-key-of-at-least-32-characters")
get_settings.cache_clear()
yield tmp_path
get_settings.cache_clear()
@pytest.fixture
def session_factory(environment):
engine = engine_for(f"sqlite:///{environment / 'test.db'}")
Base.metadata.create_all(engine)
factory = sessionmaker(bind=engine, expire_on_commit=False)
with factory() as db:
seed_initial(db)
yield factory
engine.dispose()
@pytest.fixture
def db(session_factory):
with session_factory() as session:
yield session