mathcompose / tests /test_teacher_gateway.py
42e's picture
Upload folder using huggingface_hub
014b14c verified
Raw
History Blame Contribute Delete
1.44 kB
"""promptlens gateway wiring (no network: client construction only)."""
import pytest
from mathcompose.teachers import get_teacher, PROMPTLENS_BASE_URL
def test_promptlens_requires_key(monkeypatch):
for k in ("TFY_API_KEY", "PROMPTLENS_API_KEY", "OPENAI_API_KEY"):
monkeypatch.delenv(k, raising=False)
# also neutralize any .env on disk
monkeypatch.setattr("mathcompose.common.env.load_dotenv", lambda *a, **k: False)
with pytest.raises(RuntimeError, match="TFY_API_KEY"):
get_teacher("promptlens")
def _hermetic(monkeypatch):
"""Isolate from any on-disk .env / ambient TFY_* vars."""
monkeypatch.setattr("mathcompose.common.env.load_dotenv", lambda *a, **k: False)
for k in ("TFY_MODEL", "TFY_BASE_URL", "PROMPTLENS_API_KEY", "OPENAI_API_KEY"):
monkeypatch.delenv(k, raising=False)
monkeypatch.setenv("TFY_API_KEY", "tfy-test-key")
def test_promptlens_presets_base_url_and_model(monkeypatch):
pytest.importorskip("openai")
_hermetic(monkeypatch)
t = get_teacher("promptlens")
assert t.base_url == PROMPTLENS_BASE_URL
assert t.model == "claude-sonnet-4-6" # default slug
def test_promptlens_overrides(monkeypatch):
pytest.importorskip("openai")
_hermetic(monkeypatch)
t = get_teacher("promptlens", model="claude-opus-4-8", base_url="https://example/api")
assert t.model == "claude-opus-4-8"
assert t.base_url == "https://example/api"