test: add end to end coverage
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user