让拉取本行信息链路复用Mock主体账号绑定
This commit is contained in:
@@ -10,6 +10,18 @@ import os
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from main import app
|
||||
from config.settings import settings
|
||||
from routers.api import file_service
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def reset_file_service_state():
|
||||
"""避免 file_service 单例状态影响测试顺序。"""
|
||||
file_service.file_records.clear()
|
||||
file_service.log_counter = settings.INITIAL_LOG_ID
|
||||
yield
|
||||
file_service.file_records.clear()
|
||||
file_service.log_counter = settings.INITIAL_LOG_ID
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
API 端点测试
|
||||
"""
|
||||
|
||||
from routers.api import file_service
|
||||
|
||||
|
||||
def test_root_endpoint(client):
|
||||
"""测试根路径"""
|
||||
@@ -87,6 +89,72 @@ def test_fetch_inner_flow_error_501014(client):
|
||||
assert data["successResponse"] == False
|
||||
|
||||
|
||||
def test_fetch_inner_flow_followed_by_upload_status(client):
|
||||
"""拉取行内流水后,上传状态查询应命中同一条绑定记录。"""
|
||||
response = client.post(
|
||||
"/watson/api/project/getJZFileOrZjrcuFile",
|
||||
data={
|
||||
"groupId": 1001,
|
||||
"customerNo": "test_customer_002",
|
||||
"dataChannelCode": "test_code",
|
||||
"requestDateId": 20240101,
|
||||
"dataStartDateId": 20240101,
|
||||
"dataEndDateId": 20240131,
|
||||
"uploadUserId": 902001,
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
log_id = response.json()["data"][0]
|
||||
|
||||
assert log_id in file_service.file_records
|
||||
record = file_service.file_records[log_id]
|
||||
|
||||
upload_response = client.get(
|
||||
f"/watson/api/project/bs/upload?groupId=1001&logId={log_id}"
|
||||
)
|
||||
assert upload_response.status_code == 200
|
||||
upload_data = upload_response.json()
|
||||
|
||||
assert upload_data["code"] == "200"
|
||||
assert upload_data["successResponse"] is True
|
||||
assert len(upload_data["data"]["logs"]) == 1
|
||||
|
||||
log = upload_data["data"]["logs"][0]
|
||||
assert log["enterpriseNameList"] == [record.primary_enterprise_name]
|
||||
assert log["accountNoList"] == [record.primary_account_no]
|
||||
assert log["enterpriseNameList"][0] == record.primary_enterprise_name
|
||||
assert log["accountNoList"][0] == record.primary_account_no
|
||||
|
||||
|
||||
def test_fetch_inner_flow_marks_pending_complete(client):
|
||||
"""拉取行内流水后,getpendings 应返回未解析状态。"""
|
||||
response = client.post(
|
||||
"/watson/api/project/getJZFileOrZjrcuFile",
|
||||
data={
|
||||
"groupId": 1001,
|
||||
"customerNo": "test_customer_003",
|
||||
"dataChannelCode": "test_code",
|
||||
"requestDateId": 20240101,
|
||||
"dataStartDateId": 20240101,
|
||||
"dataEndDateId": 20240131,
|
||||
"uploadUserId": 902001,
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
log_id = response.json()["data"][0]
|
||||
|
||||
pending_response = client.post(
|
||||
"/watson/api/project/upload/getpendings",
|
||||
data={"groupId": 1001, "inprogressList": str(log_id)},
|
||||
)
|
||||
assert pending_response.status_code == 200
|
||||
pending_data = pending_response.json()
|
||||
|
||||
assert pending_data["data"]["parsing"] is False
|
||||
assert len(pending_data["data"]["pendingList"]) == 1
|
||||
assert pending_data["data"]["pendingList"][0]["logId"] == log_id
|
||||
|
||||
|
||||
def test_get_upload_status_with_log_id(client):
|
||||
"""测试带 logId 参数查询返回非空 logs"""
|
||||
response = client.get("/watson/api/project/bs/upload?groupId=1000&logId=13994")
|
||||
|
||||
@@ -38,3 +38,39 @@ def test_upload_file_primary_binding_response(monkeypatch):
|
||||
assert record.primary_account_no == "6222021234567890"
|
||||
assert record.enterprise_name_list == ["测试主体A"]
|
||||
assert record.account_no_list == ["6222021234567890"]
|
||||
|
||||
|
||||
def test_fetch_inner_flow_persists_primary_binding_record(monkeypatch):
|
||||
"""拉取行内流水必须创建并保存绑定记录。"""
|
||||
service = FileService()
|
||||
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"_generate_primary_binding",
|
||||
lambda: ("行内主体", "6210987654321098"),
|
||||
)
|
||||
|
||||
request = {
|
||||
"groupId": 1001,
|
||||
"customerNo": "test_customer_001",
|
||||
"dataChannelCode": "test_code",
|
||||
"requestDateId": 20240101,
|
||||
"dataStartDateId": 20240101,
|
||||
"dataEndDateId": 20240131,
|
||||
"uploadUserId": 902001,
|
||||
}
|
||||
|
||||
response = service.fetch_inner_flow(request)
|
||||
log_id = response["data"][0]
|
||||
|
||||
assert log_id == service.log_counter
|
||||
assert log_id in service.file_records
|
||||
|
||||
record = service.file_records[log_id]
|
||||
assert record.parsing is False
|
||||
assert record.primary_enterprise_name
|
||||
assert record.primary_account_no
|
||||
assert record.primary_enterprise_name == "行内主体"
|
||||
assert record.primary_account_no == "6210987654321098"
|
||||
assert record.enterprise_name_list == ["行内主体"]
|
||||
assert record.account_no_list == ["6210987654321098"]
|
||||
|
||||
Reference in New Issue
Block a user