This commit is contained in:
zlwu committed 2026-08-28 17:38:37 +08:00
1 parent 3d98104455
commit 0d52442902
76 files changed
+21994 -12642

No files matched your search

+55 -3
View File
@@ -8,7 +8,7 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.models.base import Base
from app.models.models import OaApp, OaAppVersion, OaInstance, OaTask, SysUser
from app.models.models import OaApp, OaAppVersion, OaInstance, OaInstanceEvent, OaTask, SysUser
from app.services import oa_engine
@@ -23,6 +23,7 @@ class TestOaInstanceHistory(unittest.TestCase):
SysUser.__table__,
OaInstance.__table__,
OaTask.__table__,
OaInstanceEvent.__table__,
],
)
Session = sessionmaker(bind=self.engine, autoflush=False, autocommit=False)
@@ -50,7 +51,7 @@ class TestOaInstanceHistory(unittest.TestCase):
version_no=1,
status="published",
is_latest_published="1",
form_schema_json='{"rule":[{"type":"input","field":"leaveType","title":"请假类型"},{"type":"input","field":"days","title":"天数"}]}',
form_schema_json='{"rule":[{"type":"input","field":"leaveType","title":"请假类型"},{"type":"input","field":"days","title":"天数"},{"type":"upload","field":"voucher","title":"付款凭证"}]}',
flow_tree_json="{}",
advanced_settings_json="{}",
tenant_no="zkxw",
@@ -87,7 +88,7 @@ class TestOaInstanceHistory(unittest.TestCase):
app_version_id="v-leave",
title="请假-张三",
initiator_user_id="u-a",
form_data_json='{"leaveType":"年假","days":"2"}',
form_data_json='{"leaveType":"年假","days":"2","voucher":"f33a569a9dd64f2c853899498cd47498.png"}',
status="completed",
tenant_no="zkxw",
create_dept_id="",
@@ -203,6 +204,57 @@ class TestOaInstanceHistory(unittest.TestCase):
if pf:
self.assertGreaterEqual(len(pf), 1)
def test_preview_fields_keep_upload_files(self):
data = oa_engine.list_instance_history(
self.db,
tenant_no="zkxw",
user_id="u-a",
can_view_all=False,
app_id="app-leave",
)
pf = data["list"][0].get("previewFields") or []
voucher = next((f for f in pf if f.get("label") == "付款凭证"), None)
self.assertIsNotNone(voucher)
self.assertEqual(voucher.get("fieldType"), "upload")
self.assertEqual(
voucher.get("files"),
[
{
"url": "f33a569a9dd64f2c853899498cd47498.png",
"name": "f33a569a9dd64f2c853899498cd47498.png",
}
],
)
def test_export_history_rows(self):
data = oa_engine.export_instance_history(
self.db,
tenant_no="zkxw",
user_id="u-a",
can_view_all=False,
app_id="app-leave",
)
self.assertEqual(data["total"], 1)
self.assertGreaterEqual(len(data["businessColumns"]), 1)
self.assertEqual(len(data["fixedColumns"]), 13)
row = data["rows"][0]
self.assertEqual(row["id"], "inst-alice-done")
self.assertEqual(row["business"].get("leaveType"), "年假")
self.assertEqual(row["fixed"].get("initiatorName"), "张三")
self.assertIn("approvalRecord", row["fixed"])
def test_export_selected_ids_only(self):
data = oa_engine.export_instance_history(
self.db,
tenant_no="zkxw",
user_id="u-a",
can_view_all=True,
app_id="app-leave",
instance_ids=["inst-bob-run"],
)
self.assertEqual(data["total"], 1)
self.assertEqual(data["rows"][0]["id"], "inst-bob-run")
if __name__ == "__main__":
unittest.main()
+17 -2
View File
@@ -27,11 +27,19 @@ class TestFlatten(unittest.TestCase):
fields = flatten_form_fields_for_summary(schema, data)
labels = [f["label"] for f in fields]
self.assertNotIn("说明", labels)
self.assertEqual(fields[0], {"label": "事由", "value": "出差"})
self.assertEqual(fields[0], {"fieldKey": "reason", "label": "事由", "value": "出差"})
self.assertEqual(
fields[1]["value"],
"a.png、b.png",
)
self.assertEqual(fields[1].get("fieldType"), "upload")
self.assertEqual(
fields[1].get("files"),
[
{"url": "https://cdn.example.com/a.png", "name": "a.png"},
{"url": "https://cdn.example.com/b.png", "name": "b.png"},
],
)
self.assertTrue(fields[1].get("fullWidth"))
self.assertEqual(fields[2]["value"], "已关联 2 条")
self.assertEqual(fields[2].get("relatedIds"), ["id1", "id2"])
@@ -117,6 +125,13 @@ class TestFlatten(unittest.TestCase):
fields[0]["value"],
"a.pdf、b.pdf",
)
self.assertEqual(
fields[0].get("files"),
[
{"url": "https://cdn.example.com/a.pdf", "name": "a.pdf"},
{"url": "/mini/b.pdf", "name": "b.pdf"},
],
)
def test_extract_links_with_field_key_and_dedupe(self):
schema = {
@@ -207,7 +222,7 @@ class TestFlatten(unittest.TestCase):
fields = flatten_form_fields_for_summary(schema, {"kit1": {"x": 1}, "reason": "学习"})
labels = [f["label"] for f in fields]
self.assertNotIn("出差套件", labels)
self.assertEqual(fields[0], {"label": "出差事由", "value": "学习"})
self.assertEqual(fields[0], {"fieldKey": "reason", "label": "出差事由", "value": "学习"})
class TestValidateLinkable(unittest.TestCase):