Coverage for tests / unit / ai / test_ai_config_validation.py: 100%
29 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for AIConfig validation — A2 max_tokens upper bound."""
3from __future__ import annotations
5import pytest
6from assertpy import assert_that
7from pydantic import ValidationError
9from lintro.ai.config import AIConfig
12def test_max_tokens_default():
13 """Default max_tokens is 4096."""
14 config = AIConfig()
15 assert_that(config.max_tokens).is_equal_to(4096)
18def test_max_tokens_valid_upper_bound():
19 """max_tokens at the upper bound (128000) is accepted."""
20 config = AIConfig(max_tokens=128_000)
21 assert_that(config.max_tokens).is_equal_to(128_000)
24def test_max_tokens_exceeds_upper_bound():
25 """max_tokens above 128000 raises ValidationError."""
26 with pytest.raises(ValidationError, match="max_tokens"):
27 AIConfig(max_tokens=200_000)
30def test_max_tokens_zero_rejected():
31 """max_tokens=0 raises ValidationError."""
32 with pytest.raises(ValidationError, match="max_tokens"):
33 AIConfig(max_tokens=0)
36def test_max_tokens_negative_rejected():
37 """max_tokens=-1 raises ValidationError."""
38 with pytest.raises(ValidationError, match="max_tokens"):
39 AIConfig(max_tokens=-1)
42def test_sanitize_mode_default():
43 """Default sanitize_mode is 'warn'."""
44 config = AIConfig()
45 assert_that(config.sanitize_mode.value).is_equal_to("warn")
48def test_sanitize_mode_block():
49 """sanitize_mode='block' is accepted."""
50 config = AIConfig(sanitize_mode="block") # type: ignore[arg-type]
51 assert_that(config.sanitize_mode.value).is_equal_to("block")
54def test_sanitize_mode_off():
55 """sanitize_mode='off' is accepted."""
56 config = AIConfig(sanitize_mode="off") # type: ignore[arg-type]
57 assert_that(config.sanitize_mode.value).is_equal_to("off")