File size: 1,673 Bytes
6cfe55f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import sys
from pathlib import Path
from types import SimpleNamespace

BACKEND_ROOT = Path(__file__).resolve().parents[1]
if str(BACKEND_ROOT) not in sys.path:
    sys.path.insert(0, str(BACKEND_ROOT))

from app.services.model import ModelService
from app.services.provider import ProviderService


def _provider(provider_id: str):
    return {
        "id": provider_id,
        "name": "DeepSeek",
        "api_key": "sk-test",
        "base_url": "https://api.deepseek.com",
    }


def test_get_all_models_by_id_accepts_plain_model_list(monkeypatch):
    monkeypatch.setattr(ProviderService, "get_provider_by_id", _provider)
    monkeypatch.setattr(
        ModelService,
        "get_model_list",
        lambda provider_id, verbose=False: [
            {"id": "deepseek-chat", "object": "model"},
            {"id": "deepseek-reasoner", "object": "model"},
        ],
    )

    result = ModelService.get_all_models_by_id("deepseek")

    assert result == {
        "models": [
            {"id": "deepseek-chat", "object": "model"},
            {"id": "deepseek-reasoner", "object": "model"},
        ]
    }


def test_get_all_models_by_id_accepts_openai_page_data(monkeypatch):
    monkeypatch.setattr(ProviderService, "get_provider_by_id", _provider)
    monkeypatch.setattr(
        ModelService,
        "get_model_list",
        lambda provider_id, verbose=False: SimpleNamespace(
            data=[
                SimpleNamespace(model_dump=lambda: {"id": "gpt-4o-mini", "object": "model"}),
            ]
        ),
    )

    result = ModelService.get_all_models_by_id("openai")

    assert result == {"models": [{"id": "gpt-4o-mini", "object": "model"}]}