from __future__ import annotations

import pytest

from app.services.knowledge_rag_runtime import (
    KnowledgeRagError,
    RuntimeModelConfig,
    _LightRagRuntime,
)


def test_embedding_probe_error_includes_model_context(monkeypatch) -> None:
    runtime = _LightRagRuntime.__new__(_LightRagRuntime)
    config = RuntimeModelConfig(
        slot="embedding",
        provider="GLM",
        model="Embedding-3",
        endpoint="https://open.bigmodel.cn/api/paas/v4/",
        api_key="token",
        capability="embedding",
    )

    def fail_embeddings(*_args, **_kwargs):
        raise KnowledgeRagError("token expired")

    monkeypatch.setattr(runtime, "_request_embeddings", fail_embeddings)

    with pytest.raises(KnowledgeRagError) as exc_info:
        runtime._probe_embedding_dimension(config)

    message = str(exc_info.value)
    assert "slot=embedding" in message
    assert "provider=GLM" in message
    assert "model=Embedding-3" in message
    assert "token expired" in message
