from datetime import datetime, time from zoneinfo import ZoneInfo from llm_trade_bot.config import ScheduleConfig from llm_trade_bot.scheduler import next_scheduled_time def _config() -> ScheduleConfig: zone = ZoneInfo("Europe/Warsaw") return ScheduleConfig(zone, (time(9), time(21))) def test_next_time_same_day(): config = _config() now = datetime(2026, 9, 19, 10, 0, tzinfo=config.timezone) assert next_scheduled_time(config, now) == datetime(2026, 9, 19, 21, 0, tzinfo=config.timezone) def test_next_time_rolls_to_tomorrow(): config = _config() now = datetime(2026, 9, 19, 22, 0, tzinfo=config.timezone) assert next_scheduled_time(config, now) == datetime(2026, 9, 20, 9, 0, tzinfo=config.timezone)