refactor(db)!: finalize pooled WNDB v2 migration
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import json
|
||||
from contextlib import contextmanager
|
||||
|
||||
from tests.conftest import install_stub, load_module_from_path
|
||||
|
||||
@@ -29,7 +30,6 @@ def _load_scenarios_module(monkeypatch):
|
||||
"SOURCE_TYPE_SETPOINT": "SOURCE_TYPE_SETPOINT",
|
||||
"add_pattern": lambda *args, **kwargs: None,
|
||||
"add_source": lambda *args, **kwargs: None,
|
||||
"close_project": lambda *args, **kwargs: None,
|
||||
"copy_project": lambda *args, **kwargs: None,
|
||||
"delete_project": lambda *args, **kwargs: None,
|
||||
"get_demand": lambda *args, **kwargs: None,
|
||||
@@ -42,8 +42,6 @@ def _load_scenarios_module(monkeypatch):
|
||||
"get_time": lambda *args, **kwargs: None,
|
||||
"have_project": lambda *args, **kwargs: False,
|
||||
"is_junction": lambda *args, **kwargs: False,
|
||||
"is_project_open": lambda *args, **kwargs: False,
|
||||
"open_project": lambda *args, **kwargs: None,
|
||||
"set_demand": lambda *args, **kwargs: None,
|
||||
"set_emitter": lambda *args, **kwargs: None,
|
||||
"set_option": lambda *args, **kwargs: None,
|
||||
@@ -61,12 +59,11 @@ def test_age_analysis_passes_duration_by_keyword(monkeypatch):
|
||||
module = _load_scenarios_module(monkeypatch)
|
||||
captured = {}
|
||||
|
||||
monkeypatch.setattr(module, "copy_project", lambda *args, **kwargs: None)
|
||||
monkeypatch.setattr(module, "open_project", lambda *args, **kwargs: None)
|
||||
monkeypatch.setattr(module, "close_project", lambda *args, **kwargs: None)
|
||||
monkeypatch.setattr(module, "delete_project", lambda *args, **kwargs: None)
|
||||
monkeypatch.setattr(module, "have_project", lambda *args, **kwargs: False)
|
||||
monkeypatch.setattr(module, "is_project_open", lambda *args, **kwargs: False)
|
||||
@contextmanager
|
||||
def fake_temporary_project(project, purpose):
|
||||
yield f"{purpose}_{project}_run"
|
||||
|
||||
monkeypatch.setattr(module, "temporary_project_database", fake_temporary_project)
|
||||
|
||||
def fake_run_simulation_ex(*args, **kwargs):
|
||||
captured["args"] = args
|
||||
@@ -78,7 +75,7 @@ def test_age_analysis_passes_duration_by_keyword(monkeypatch):
|
||||
module.age_analysis("demo", "2026-06-03T07:00:00+08:00", 300)
|
||||
|
||||
assert captured["args"] == (
|
||||
"age_Anal_demo",
|
||||
"age_analysis_demo_run",
|
||||
"realtime",
|
||||
"2026-06-03T07:00:00+08:00",
|
||||
)
|
||||
@@ -86,3 +83,29 @@ def test_age_analysis_passes_duration_by_keyword(monkeypatch):
|
||||
"duration": 300,
|
||||
"downloading_prohibition": True,
|
||||
}
|
||||
|
||||
|
||||
def test_isolated_analysis_cleans_database_after_early_return(monkeypatch):
|
||||
module = _load_scenarios_module(monkeypatch)
|
||||
lifecycle: list[tuple[str, str]] = []
|
||||
|
||||
@contextmanager
|
||||
def fake_temporary_project(project, purpose):
|
||||
lifecycle.append(("create", purpose))
|
||||
try:
|
||||
yield "isolated_run"
|
||||
finally:
|
||||
lifecycle.append(("delete", purpose))
|
||||
|
||||
monkeypatch.setattr(
|
||||
module, "temporary_project_database", fake_temporary_project
|
||||
)
|
||||
|
||||
@module._isolated_analysis("probe")
|
||||
def return_early(name, *, _temporary_project=None):
|
||||
assert name == "demo"
|
||||
assert _temporary_project == "isolated_run"
|
||||
return "done"
|
||||
|
||||
assert return_early("demo") == "done"
|
||||
assert lifecycle == [("create", "probe"), ("delete", "probe")]
|
||||
|
||||
Reference in New Issue
Block a user