42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
|
|
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"
|