提交
This commit is contained in:
1 parent
3d98104455
commit
0d52442902
76 files changed
+21994
-12642
No files matched your search
@@ -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()
|
||||
@@ -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):
|
||||
|
||||
Reference in new issue
Block a user