# retoor from dataclasses import replace from devplacepy.services.devii.config import load_settings from devplacepy.services.devii.fetch.controller import MIN_FETCH_CHARS, FetchController def _controller(ceiling): return FetchController(replace(load_settings(), fetch_max_chars=ceiling)) def test_optional_cap_defaults_to_ceiling(): controller = _controller(2000) assert controller._optional_cap(None, "a" * 5000) == "a" * 2000 def test_optional_cap_clamps_large_request_to_ceiling(): controller = _controller(2000) assert controller._optional_cap(10**9, "b" * 5000) == "b" * 2000 def test_optional_cap_honors_smaller_request(): controller = _controller(2000) assert controller._optional_cap(1500, "c" * 5000) == "c" * 1500 def test_optional_cap_floors_tiny_request(): controller = _controller(2000) assert controller._optional_cap(10, "d" * 5000) == "d" * MIN_FETCH_CHARS def test_optional_cap_invalid_request_falls_back_to_ceiling(): controller = _controller(2000) assert controller._optional_cap("many", "e" * 5000) == "e" * 2000 def test_optional_cap_leaves_short_content_alone(): controller = _controller(2000) assert controller._optional_cap(None, "short") == "short" assert controller._optional_cap(1500, "short") == "short"