File size: 1,440 Bytes
014b14c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""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"