Files
ecm_sync_system/tests/unit/test_auto_test_project_profile.py
T
2026-03-20 14:38:56 +08:00

66 lines
2.3 KiB
Python

from __future__ import annotations
import importlib.util
from pathlib import Path
import sys
import yaml
def _load_base_module():
scripts_dir = Path(__file__).resolve().parents[2] / "scripts"
if str(scripts_dir) not in sys.path:
sys.path.insert(0, str(scripts_dir))
file_path = Path(__file__).resolve().parents[2] / "scripts" / "auto_test_domains" / "base.py"
spec = importlib.util.spec_from_file_location("auto_test_domain_base_for_test", file_path)
if spec is None or spec.loader is None:
raise RuntimeError(f"Unable to load module from {file_path}")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def test_build_temp_run_profile_uses_explicit_project_prebind(tmp_path: Path) -> None:
module = _load_base_module()
source_profile = tmp_path / "source.yaml"
source_profile.write_text(
yaml.safe_dump(
{
"local_datasource": {"handler_configs": {"project": {"data_id_filter": ["old-local"]}}},
"remote_datasource": {"handler_configs": {"project": {"data_id_filter": ["old-remote"]}}},
"strategies": {"project": {"config": {}}},
},
allow_unicode=True,
sort_keys=False,
),
encoding="utf-8",
)
config = {
"pipeline": {
"run_profile": str(source_profile),
"command": ["python", "run.py", "--config_path", "placeholder.yaml"],
}
}
profile_path, command = module.build_temp_run_profile_for_project_auto_bind(
config=config,
report_root=tmp_path,
profile_name="demo",
local_project_id="local-project",
remote_project_id="remote-project",
)
profile = yaml.safe_load(Path(profile_path).read_text(encoding="utf-8"))
project_config = profile["strategies"]["project"]["config"]
assert profile["local_datasource"]["handler_configs"]["project"]["data_id_filter"] == ["local-project"]
assert profile["remote_datasource"]["handler_configs"]["project"]["data_id_filter"] == ["remote-project"]
assert project_config["auto_bind"] is False
assert project_config["auto_bind_fields"] == []
assert project_config["pre_bind_data_id"] == [
{"local_data_id": "local-project", "remote_data_id": "remote-project"}
]
assert command[-1] == profile_path