File size: 1,876 Bytes
0cdf561
b2929fc
 
 
 
 
 
 
ff16d8e
b2929fc
 
 
 
 
 
 
 
 
 
 
 
599a754
b2929fc
622c8ba
b2929fc
 
ff16d8e
622c8ba
b2929fc
 
915b009
 
599a754
915b009
b2929fc
915b009
 
 
 
 
b2929fc
915b009
599a754
b2929fc
915b009
b2929fc
 
 
915b009
b2929fc
 
915b009
 
599a754
b2929fc
622c8ba
915b009
b2929fc
 
ff16d8e
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
59
60
61
"""Unit tests for Judge Factory and Model Selection."""

from unittest.mock import patch

import pytest

pytestmark = pytest.mark.unit
from pydantic_ai.models.huggingface import HuggingFaceModel
from pydantic_ai.models.openai import OpenAIChatModel

from src.agent_factory.judges import get_model


@pytest.fixture
def mock_settings():
    with patch("src.agent_factory.judges.settings", autospec=True) as mock_settings:
        yield mock_settings


def test_get_model_openai(mock_settings):
    """Test that OpenAI model is returned when provider is openai."""
    mock_settings.has_openai_key = True
    mock_settings.openai_api_key = "sk-test"
    mock_settings.openai_model = "gpt-5"

    model = get_model()
    assert isinstance(model, OpenAIChatModel)
    assert model.model_name == "gpt-5"


def test_get_model_byok_openai(mock_settings):
    """Test that BYOK OpenAI key returns OpenAI model."""
    mock_settings.has_openai_key = False
    mock_settings.openai_model = "gpt-5"

    # BYOK takes priority over env vars
    model = get_model(api_key="sk-byok-test")
    assert isinstance(model, OpenAIChatModel)


def test_get_model_huggingface(mock_settings):
    """Test that HuggingFace model is returned when no paid keys."""
    mock_settings.has_openai_key = False
    mock_settings.hf_token = "hf_test_token"
    mock_settings.huggingface_model = "Qwen/Qwen2.5-7B-Instruct"

    model = get_model()
    assert isinstance(model, HuggingFaceModel)
    assert model.model_name == "Qwen/Qwen2.5-7B-Instruct"


def test_get_model_openai_priority(mock_settings):
    """Test OpenAI takes priority when both keys present."""
    mock_settings.has_openai_key = True
    mock_settings.openai_api_key = "sk-test"
    mock_settings.openai_model = "gpt-5"
    mock_settings.hf_token = "hf_test_token"

    model = get_model()
    assert isinstance(model, OpenAIChatModel)