1212
1313import pytest
1414from datetime import datetime , timezone , timedelta
15- from unittest .mock import AsyncMock , MagicMock , patch
15+ from unittest .mock import AsyncMock , MagicMock
1616
1717from apflow .scheduler .base import (
1818 SchedulerConfig ,
@@ -983,34 +983,31 @@ class TestSchedulerAPIDetection:
983983 def _reset_config (self ):
984984 """Reset ConfigManager between tests.
985985
986- Patches load_cli_config to prevent re-loading from the developer's
987- local config file (.data/config.cli.yaml), which would re-establish
988- a real api_server_url and defeat the purpose of cm.clear().
986+ Clears config and env to ensure clean state.
989987 """
990988 from apflow .core .config_manager import get_config_manager
991989
992990 cm = get_config_manager ()
993991 cm .clear ()
994- with patch .object (cm , "load_cli_config" ):
995- yield
992+ yield
996993 cm .clear ()
997994
998- def test_detect_api_mode_true_when_url_configured (self ):
999- """Detection returns True when api_server_url is configured."""
995+ def test_detect_api_mode_true_when_url_configured (self , monkeypatch ):
996+ """Detection returns True when APFLOW_API_SERVER_URL is set."""
997+ monkeypatch .setenv ("APFLOW_API_SERVER_URL" , "http://localhost:8000" )
1000998 from apflow .core .config_manager import get_config_manager
1001999
1002- cm = get_config_manager ()
1003- cm .set_api_server_url ("http://localhost:8000" )
1000+ get_config_manager ().reload ()
10041001
10051002 scheduler = InternalScheduler ()
10061003 assert scheduler ._detect_api_mode () is True
10071004
10081005 def test_detect_api_mode_false_when_no_url_configured (self ):
1009- """Detection returns False when no api_server_url is configured ."""
1006+ """Detection returns False when no APFLOW_API_SERVER_URL is set ."""
10101007 scheduler = InternalScheduler ()
10111008 assert scheduler ._detect_api_mode () is False
10121009
1013- def test_detect_api_mode_reflects_config_changes (self ):
1010+ def test_detect_api_mode_reflects_config_changes (self , monkeypatch ):
10141011 """Detection re-reads ConfigManager on every call (no stale cache)."""
10151012 from apflow .core .config_manager import get_config_manager
10161013
@@ -1019,19 +1016,21 @@ def test_detect_api_mode_reflects_config_changes(self):
10191016
10201017 assert scheduler ._detect_api_mode () is False
10211018
1022- cm .set_api_server_url ("http://localhost:8000" )
1019+ monkeypatch .setenv ("APFLOW_API_SERVER_URL" , "http://localhost:8000" )
1020+ cm .reload ()
10231021 assert scheduler ._detect_api_mode () is True
10241022
1025- cm .set_api_server_url (None )
1023+ monkeypatch .delenv ("APFLOW_API_SERVER_URL" )
1024+ cm .reload ()
10261025 assert scheduler ._detect_api_mode () is False
10271026
10281027 @pytest .mark .asyncio
1029- async def test_start_enables_api_mode_when_url_configured (self ):
1028+ async def test_start_enables_api_mode_when_url_configured (self , monkeypatch ):
10301029 """start() detects API and sets _use_api=True when URL configured."""
10311030 from apflow .core .config_manager import get_config_manager
10321031
1033- cm = get_config_manager ( )
1034- cm . set_api_server_url ( "http://localhost:8000" )
1032+ monkeypatch . setenv ( "APFLOW_API_SERVER_URL" , "http://localhost:8000" )
1033+ get_config_manager (). reload ( )
10351034
10361035 scheduler = InternalScheduler ()
10371036 scheduler ._get_due_tasks = AsyncMock (return_value = [])
0 commit comments