feat(tplus): 新增 T+ 只读同步服务与同步管理
这个提交包含在:
1 父节点
78bef43c06
当前提交
4fe5916c2c
43 个文件已更改
+3309
-388
没有与搜索条件相匹配的文件
@@ -0,0 +1,58 @@
|
||||
"""T+ 配置和读取适配层的纯单元测试。"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from app.core.config import Settings
|
||||
from app.services.tplus.mapping import MappingStatus, get_mapping
|
||||
from app.services.tplus.reader import TPlusReader
|
||||
|
||||
|
||||
def _settings(**overrides: object) -> Settings:
|
||||
params: dict[str, object] = {"_env_file": None, "app_secret_key": "x" * 32}
|
||||
params.update(overrides)
|
||||
return Settings(**params) # type: ignore[arg-type]
|
||||
|
||||
|
||||
def test_T加数据库URL使用mssql_pyodbc并隐藏密码() -> None:
|
||||
settings = _settings(
|
||||
t_plus_enabled=True,
|
||||
t_plus_database="UFTData472115_000001",
|
||||
t_plus_user="reader",
|
||||
t_plus_password="p@ss:w/ord",
|
||||
)
|
||||
url = settings.t_plus_database_url
|
||||
assert url.drivername == "mssql+pyodbc"
|
||||
assert url.database == "UFTData472115_000001"
|
||||
assert "p@ss:w/ord" not in url.render_as_string()
|
||||
|
||||
|
||||
def test_T加未启用时读取器不建立连接() -> None:
|
||||
settings = _settings(t_plus_enabled=False)
|
||||
assert settings.t_plus_enabled is False
|
||||
|
||||
|
||||
def test_T加查询文件覆盖六类实体() -> None:
|
||||
reader = TPlusReader.__new__(TPlusReader)
|
||||
reader.query_dir = Path(__file__).resolve().parents[3] / "db" / "queries" / "tplus"
|
||||
assert reader.inventory() == (
|
||||
"personnel",
|
||||
"products",
|
||||
"customers",
|
||||
"businesses",
|
||||
"shipments",
|
||||
"receipts",
|
||||
)
|
||||
for entity in reader.inventory():
|
||||
assert (reader.query_dir / f"{entity}.sql").is_file()
|
||||
|
||||
|
||||
def test_T加高风险映射保持待确认() -> None:
|
||||
assert get_mapping("businesses").status is MappingStatus.PENDING
|
||||
assert "成本口径" in get_mapping("businesses").unresolved
|
||||
|
||||
|
||||
def test_未知T加实体被拒绝() -> None:
|
||||
with pytest.raises(KeyError):
|
||||
get_mapping("unknown")
|
||||
在新工单中引用
屏蔽一个用户