compliance/test_multi_pk_support.py
2025-08-07 22:44:57 +08:00

72 lines
2.4 KiB
Python

#!/usr/bin/env python3
"""
测试多主键支持的简单脚本
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from custom_stages.dms_crud_scenario_stage import DmsCrudScenarioStage
def test_build_list_filter_payload():
"""测试LIST过滤条件构建"""
# 创建一个简单的stage实例来测试方法
stage = DmsCrudScenarioStage(api_group_metadata={}, apis_in_group=[])
# 测试多主键场景
identity_id_list = ["wellId", "wellboreId", "eventName"]
all_pk_values = {
"wellId": "WELLTL100017525",
"wellboreId": "WEBHTL100001283",
"eventName": "测试井2"
}
result = stage._build_list_filter_payload(identity_id_list, all_pk_values)
print("=== 多主键LIST过滤条件 ===")
import json
print(json.dumps(result, indent=2, ensure_ascii=False))
# 验证结构
assert "isSearchCount" in result
assert "query" in result
assert "filter" in result["query"]
assert "subFilter" in result["query"]["filter"]
assert len(result["query"]["filter"]["subFilter"]) == 1 # 简化模式:只使用一个过滤条件
# 验证过滤条件(简化模式:只使用第一个主键)
assert len(result["query"]["filter"]["subFilter"]) == 1
sub_filter = result["query"]["filter"]["subFilter"][0]
assert sub_filter["key"] == identity_id_list[0] # 第一个主键
assert sub_filter["symbol"] == "="
assert sub_filter["realValue"] == [all_pk_values[identity_id_list[0]]]
print("✅ 多主键LIST过滤条件测试通过")
def test_single_pk_scenario():
"""测试单主键场景"""
stage = DmsCrudScenarioStage(api_group_metadata={}, apis_in_group=[])
# 测试单主键场景
identity_id_list = ["id"]
all_pk_values = {"id": "12345"}
result = stage._build_list_filter_payload(identity_id_list, all_pk_values)
print("\n=== 单主键LIST过滤条件 ===")
import json
print(json.dumps(result, indent=2, ensure_ascii=False))
# 验证结构
assert len(result["query"]["filter"]["subFilter"]) == 1
assert result["query"]["filter"]["subFilter"][0]["key"] == "id"
assert result["query"]["filter"]["subFilter"][0]["realValue"] == ["12345"]
print("✅ 单主键LIST过滤条件测试通过")
if __name__ == "__main__":
test_build_list_filter_payload()
test_single_pk_scenario()
print("\n🎉 所有测试通过!")