Code / services/cj_assessment_service/tests/unit/test_comparison_request_normalizer.py
services/cj_assessment_service/tests/unit/test_comparison_request_normalizer.py
1
"""Unit tests for ComparisonRequestNormalizer batch config handling."""
2
3
from __future__ import annotations
4
5
import pytest
6
from pydantic import ValidationError
7
8
from common_core import CourseCode
9
from services.cj_assessment_service.cj_core_logic.comparison_request_normalizer import (
10
ComparisonRequestNormalizer,
11
)
12
from services.cj_assessment_service.config import Settings
13
from services.cj_assessment_service.models_api import CJAssessmentRequestData, EssayToProcess
14
15
16
class TestComparisonRequestNormalizerBatchConfig:
17
"""Tests for mapping batch_config_overrides into typed overrides."""
18
19
def test_retired_batching_mode_override_fails_validation(self) -> None:
20
"""CJ rejects the retired provider-execution override."""
21
22
settings = Settings()
23
normalizer = ComparisonRequestNormalizer(settings=settings)
24
25
request_data = CJAssessmentRequestData(
26
bos_batch_id="bos-batch-123",
27
assignment_id="assignment-123",
28
essays_to_process=[
29
EssayToProcess(els_essay_id="essay-1", text_storage_id="storage-1"),
30
],
31
language="en",
32
course_code=CourseCode.ENG5.value,
33
cj_source="els",
34
cj_request_type="cj_comparison",
35
student_prompt_text=None,
36
student_prompt_storage_id=None,
37
judge_rubric_text=None,
38
judge_rubric_storage_id=None,
39
llm_config_overrides=None,
40
batch_config_overrides={"llm_batching_mode_override": "provider_batch_api"},
41
max_comparisons_override=None,
42
user_id="user-123",
43
org_id="org-123",
44
)
45
46
with pytest.raises(ValidationError):
47
normalizer.normalize(request_data)
48
49
def test_unknown_batch_config_override_fails_validation(self) -> None:
50
"""Unknown batch configuration keys fail before orchestration."""
51
52
settings = Settings()
53
normalizer = ComparisonRequestNormalizer(settings=settings)
54
55
request_data = CJAssessmentRequestData(
56
bos_batch_id="bos-batch-123",
57
assignment_id="assignment-123",
58
essays_to_process=[
59
EssayToProcess(els_essay_id="essay-1", text_storage_id="storage-1"),
60
],
61
language="en",
62
course_code=CourseCode.ENG5.value,
63
cj_source="els",
64
cj_request_type="cj_comparison",
65
batch_config_overrides={"unsupported_override": "value"},
66
user_id="user-123",
67
org_id="org-123",
68
)
69
70
with pytest.raises(ValidationError):
71
normalizer.normalize(request_data)