| """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) |
| |
| 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" |
|
|
|
|
| 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" |
|
|