File: test_evaluate_aoai.py

package info (click to toggle)
python-azure 20251118%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 783,356 kB
  • sloc: python: 6,474,533; ansic: 804; javascript: 287; sh: 205; makefile: 198; xml: 109
file content (121 lines) | stat: -rw-r--r-- 4,704 bytes parent folder | download
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import pytest
import copy
from azure.ai.evaluation._evaluate._evaluate_aoai import _combine_item_schemas


@pytest.fixture
def default_data_source_config():
    return {
        "type": "custom",
        "item_schema": {
            "type": "object",
            "properties": {
                "id": {"type": "string"},
                "text": {"type": "string"},
            },
            "required": ["id", "text"],
        },
        "include_sample_schema": False,
    }


class TestCombineItemSchemas:
    """Unit tests for _combine_item_schemas"""

    def test_combine_item_schemas_success(self, default_data_source_config):
        data_source_config = copy.deepcopy(default_data_source_config)
        kwargs = {
            "item_schema": {
                "properties": {
                    "metadata": {"type": "object"},
                    "timestamp": {"type": "string", "format": "date-time"},
                },
                "required": ["metadata"],
            }
        }
        _combine_item_schemas(data_source_config, kwargs)

        expected_properties = {
            "id": {"type": "string"},
            "text": {"type": "string"},
            "metadata": {"type": "object"},
            "timestamp": {"type": "string", "format": "date-time"},
        }
        expected_required = ["id", "text", "metadata"]
        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

    def test_combine_item_schemas_without_item_schema(self, default_data_source_config):
        data_source_config = copy.deepcopy(default_data_source_config)

        expected_properties = {
            "id": {"type": "string"},
            "text": {"type": "string"},
        }
        expected_required = ["id", "text"]

        # No "item_schema" in kwargs
        kwargs = {}
        _combine_item_schemas(data_source_config, kwargs)
        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

        # "item_schema" as None in kwargs
        kwargs = {"item_schema": None}
        _combine_item_schemas(data_source_config, kwargs)
        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

        # "item_schema" is a wrong value in kwargs
        kwargs = {"item_schema": 12345}
        _combine_item_schemas(data_source_config, kwargs)
        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

        # "item_schema" without "properties" in kwargs
        kwargs = {"item_schema": {}}
        _combine_item_schemas(data_source_config, kwargs)
        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

    def test_combine_item_schemas_with_empty_external_properties(self, default_data_source_config):
        data_source_config = copy.deepcopy(default_data_source_config)
        kwargs = {
            "item_schema": {
                "properties": {},
                "required": [],
            }
        }
        _combine_item_schemas(data_source_config, kwargs)

        expected_properties = {
            "id": {"type": "string"},
            "text": {"type": "string"},
        }
        expected_required = ["id", "text"]

        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required

    def test_combine_item_schemas_with_external_properties_without_required(self, default_data_source_config):
        data_source_config = copy.deepcopy(default_data_source_config)
        kwargs = {
            "item_schema": {
                "properties": {
                    "metadata": {"type": "object"},
                    "timestamp": {"type": "string", "format": "date-time"},
                },
            }
        }
        _combine_item_schemas(data_source_config, kwargs)

        expected_properties = {
            "id": {"type": "string"},
            "text": {"type": "string"},
            "metadata": {"type": "object"},
            "timestamp": {"type": "string", "format": "date-time"},
        }
        expected_required = ["id", "text"]

        assert data_source_config["item_schema"]["properties"] == expected_properties
        assert data_source_config["item_schema"]["required"] == expected_required