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

1"""Tests for AIConfig validation — A2 max_tokens upper bound.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6from assertpy import assert_that 

7from pydantic import ValidationError 

8 

9from lintro.ai.config import AIConfig 

10 

11 

12def test_max_tokens_default(): 

13 """Default max_tokens is 4096.""" 

14 config = AIConfig() 

15 assert_that(config.max_tokens).is_equal_to(4096) 

16 

17 

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) 

22 

23 

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) 

28 

29 

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) 

34 

35 

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) 

40 

41 

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") 

46 

47 

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") 

52 

53 

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")