import pytest from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from coldcall_lti import create_app from coldcall_lti.config import Config from coldcall_lti.db import Base @pytest.fixture def db_session(): engine = create_engine("sqlite://") Base.metadata.create_all(engine) session = sessionmaker(bind=engine)() yield session session.close() engine.dispose() def make_app(tmp_path, dev_mode=True): class TestConfig(Config): TESTING = True DATABASE_URL = f"sqlite:///{tmp_path}/test.sqlite3" DEV_MODE = dev_mode SECRET_KEY = "test" app = create_app(TestConfig) Base.metadata.create_all(app.extensions["db_engine"]) return app @pytest.fixture def dev_client(tmp_path): return make_app(tmp_path, dev_mode=True).test_client() def outcome_actions(page): """Map outcome button labels to their form values on a live page, e.g. {'GOOD': 'level-1', ..., 'Missing': 'missing'}.""" import re return { label.strip(): value for value, label in re.findall( r'', page, ) }