打通 T+ 快照、业务、发货、回款和核算准备链路,保留来源差异并提供待补状态。 新增业务自动接入任务、跨平台读取服务托管、权限复核、来源关联和前端核对页面。 补充迁移、隔离集成测试、浏览器模拟验收及角色授权边界修复。
32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
"""业务列表按照核算准备结果筛选时保持准确分页。"""
|
|
|
|
from types import SimpleNamespace
|
|
|
|
from app.schemas.business import BusinessOut, BusinessQuery
|
|
from app.services import business_service, business_source
|
|
|
|
|
|
def test_准备原因筛选跨批次分页并按实际状态计数(monkeypatch):
|
|
rows = [(SimpleNamespace(id=i, integration_json={"source_database": "test"}),)
|
|
for i in range(105, 0, -1)]
|
|
|
|
def scan(_session, _query, before_id, limit=100):
|
|
return [row for row in rows if before_id is None or row[0].id < before_id][:limit]
|
|
|
|
def summaries(_session, businesses, *, snapshot_cache=None):
|
|
return {row.id: {"status": "PENDING" if row.id % 2 else "READY",
|
|
"reasons": ([{"code": "GUIDANCE_PENDING", "message": "指导成本待补"}]
|
|
if row.id % 2 else [])} for row in businesses}
|
|
|
|
monkeypatch.setattr(business_service.business_repository, "scan_businesses", scan)
|
|
monkeypatch.setattr(business_source, "readiness_summaries", summaries)
|
|
monkeypatch.setattr(business_service, "_to_out", lambda row: BusinessOut(
|
|
id=row[0].id, business_no=str(row[0].id), customer_id=1))
|
|
|
|
result = business_service.list_businesses(None, BusinessQuery(
|
|
pageNum=3, pageSize=10, readiness_reason="GUIDANCE_PENDING", pending_only=True))
|
|
|
|
assert result.total == 53
|
|
assert [row.id for row in result.records] == list(range(65, 45, -2))
|
|
assert all(row.readiness_status == "PENDING" for row in result.records)
|