"""postprocess.rules / postprocess.llm (urllib monkeypatch).""" from __future__ import annotations import json import pytest from luke_scribe.postprocess import llm, rules def test_rules_normalize(): assert rules.normalize("구글 Embedding Gemma 소개") == "구글 EmbeddingGemma 소개" assert rules.normalize("그대로") == "그대로" def test_llm_not_configured(): with pytest.raises(llm.LLMNotConfigured): llm.correct("x", base_url=None, api_key=None) class _FakeResp: def __init__(self, payload: dict) -> None: self._p = payload def read(self) -> bytes: return json.dumps(self._p).encode() def __enter__(self): return self def __exit__(self, *_a): return False def test_llm_correct_monkeypatched(monkeypatch): def fake_urlopen(_req, timeout=90): # noqa: ARG001 return _FakeResp({"choices": [{"message": {"content": "EmbeddingGemma 복원됨"}}]}) monkeypatch.setattr(llm.urllib.request, "urlopen", fake_urlopen) out = llm.correct("인베딩 점마", base_url="http://x/v1", api_key="k", model="m") assert out == "EmbeddingGemma 복원됨"