| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- """首页「ETC/油卡充值审批」角标:统计当前用户待审批单据数。"""
- from datetime import date
- from typing import Optional
- from sqlalchemy import create_engine
- from sqlalchemy.orm import sessionmaker
- from app.models.bx_models import BxWorkflowDef, BxWorkflowNode
- from app.models.pl_models import PlVehicleRechargeApply
- from app.services.pl_menu_badge_service import (
- MENU_CODE_RECHARGE_APPROVAL,
- build_menu_badge_counts,
- )
- def test_recharge_approval_badge_counts_current_approver_pending(monkeypatch):
- engine = create_engine("sqlite://")
- BxWorkflowDef.__table__.create(engine)
- BxWorkflowNode.__table__.create(engine)
- PlVehicleRechargeApply.__table__.create(engine)
- db = sessionmaker(bind=engine)()
- db.add(
- BxWorkflowDef(
- id="wf1",
- biz_type="vehicle_recharge",
- wf_name="充值审批",
- tenant_no="t1",
- create_dept_id="d1",
- )
- )
- db.add(
- BxWorkflowNode(
- id="node-me",
- wf_id="wf1",
- node_name="总经理",
- node_order=1,
- approver_id="u-me",
- action_type="approve",
- tenant_no="t1",
- create_dept_id="d1",
- )
- )
- db.add(
- BxWorkflowNode(
- id="node-other",
- wf_id="wf1",
- node_name="财务",
- node_order=2,
- approver_id="u-other",
- action_type="disburse",
- tenant_no="t1",
- create_dept_id="d1",
- )
- )
- def add_apply(row_id: str, *, status: str, current_node: Optional[str]) -> None:
- db.add(
- PlVehicleRechargeApply(
- id=row_id,
- apply_no=f"NO-{row_id}",
- license_plate="鄂A00001",
- recharge_type="fuel",
- apply_date=date(2026, 9, 1),
- applicant_id="u1",
- status=status,
- current_node=current_node,
- tenant_no="t1",
- create_dept_id="d1",
- )
- )
- add_apply("a1", status="in_approval", current_node="node-me")
- add_apply("a2", status="in_approval", current_node="node-me")
- add_apply("a3", status="in_approval", current_node="node-other")
- add_apply("a4", status="rejected", current_node="node-me")
- add_apply("a5", status="draft", current_node=None)
- db.commit()
- monkeypatch.setattr(
- "app.services.pl_menu_badge_service.apply_pl_scope",
- lambda query, *_args, **_kwargs: query,
- )
- counts = build_menu_badge_counts(
- db,
- tenant_no="t1",
- user=object(),
- user_id="u-me",
- menu_codes=[MENU_CODE_RECHARGE_APPROVAL],
- )
- assert counts[MENU_CODE_RECHARGE_APPROVAL] == 2
|