| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- from pathlib import Path
- from app.core.system.permissions import (
- WORK_CENTER_MANAGE,
- WORK_CENTER_OPERATE,
- WORK_CENTER_READ,
- permission_for_request,
- permissions_for_roles,
- )
- ROOT = Path(__file__).resolve().parents[1]
- def test_work_center_migration_is_versioned_audited_and_non_destructive():
- migration = (
- ROOT / "migrations/versions/20260802_430_unified_work_center.py"
- ).read_text(encoding="utf-8")
- assert 'revision = "20260802_430"' in migration
- assert 'down_revision = "20260801_420"' in migration
- for table in (
- "governance_workflows",
- "governance_workflow_versions",
- "governance_tasks",
- "governance_task_participants",
- "governance_task_reviews",
- "governance_task_comments",
- "governance_task_attachments",
- "governance_task_events",
- "governance_notification_templates",
- "governance_notification_preferences",
- "governance_notifications",
- "governance_notification_attempts",
- ):
- assert f"CREATE TABLE public.{table}" in migration
- assert "uq_governance_task_active_source" in migration
- assert "source_state_unchanged" in migration
- assert "raise RuntimeError" in migration
- assert "DROP TABLE" not in migration.upper()
- def test_work_center_permissions_separate_read_operate_and_manage():
- assert WORK_CENTER_READ in permissions_for_roles(["viewer"])
- assert WORK_CENTER_OPERATE not in permissions_for_roles(["viewer"])
- assert WORK_CENTER_OPERATE in permissions_for_roles(["editor"])
- assert WORK_CENTER_MANAGE not in permissions_for_roles(["editor"])
- assert WORK_CENTER_MANAGE in permissions_for_roles(["admin"])
- assert permission_for_request("/api/system/work-center/tasks", "GET") == (
- WORK_CENTER_READ,
- )
- assert permission_for_request("/api/system/work-center/tasks/x/review", "POST") == (
- WORK_CENTER_OPERATE,
- )
- assert permission_for_request("/api/system/work-center/workflows", "POST") == (
- WORK_CENTER_MANAGE,
- )
- def test_work_center_api_and_frontend_expose_the_complete_operator_surface():
- api = (ROOT / "app/api/system/work_center.py").read_text(encoding="utf-8")
- client = (ROOT / "frontend/src/api/workCenter.js").read_text(encoding="utf-8")
- view = (
- ROOT / "frontend/src/views/dataReview/workCenter.vue"
- ).read_text(encoding="utf-8")
- routes = (ROOT / "frontend/src/router/routes.js").read_text(encoding="utf-8")
- home = (ROOT / "frontend/src/views/home/index.vue").read_text(encoding="utf-8")
- for path in (
- "/work-center/workflows",
- "/work-center/tasks",
- "/comments",
- "/attachments",
- "/work-center/notifications",
- "/work-center/templates",
- "/work-center/preferences",
- "/work-center/dashboard",
- ):
- assert path in api
- for operation in (
- "listWorkCenterTasks",
- "getWorkCenterTask",
- "reviewWorkCenterTask",
- "transferWorkCenterTask",
- "closeWorkCenterTask",
- "reopenWorkCenterTask",
- "addWorkCenterComment",
- "addWorkCenterAttachment",
- "listWorkCenterNotifications",
- "getWorkCenterDashboard",
- ):
- assert operation in client
- assert "统一工作中心" in view
- assert "质量问题" in view
- assert "术语标准" in view
- assert "数据产品" in view
- assert "Agent 审批" in view
- assert "逾期待办" in view
- assert "/dataReview/work-center" in routes
- assert "getWorkCenterDashboard" in home
|