feat(lab-sample): 实验室样本处理三表台账与部门字段 ACL
按造血/单个核/间充质聚合展示,部门员工只改本部门、主管可改全部,并支持筛选与 Excel 导出;同步纠正采集接受人串权与严格菜单守卫。
This commit is contained in:
1 parent
58b252ce6b
commit
5fe1193a2c
22 files changed
+2136
-5
No files matched your search
@@ -0,0 +1,53 @@
|
||||
import unittest
|
||||
|
||||
from app.services.lab_sample_processing_fields import (
|
||||
DATASET_HSC,
|
||||
DATASET_MSC,
|
||||
DATASET_UBMC,
|
||||
DEPT_MARKET,
|
||||
DEPT_PRODUCTION,
|
||||
DEPT_QC,
|
||||
editable_depts_for_user,
|
||||
field_map,
|
||||
resolve_dataset_by_type_name,
|
||||
schema_payload,
|
||||
)
|
||||
|
||||
|
||||
class LabSampleProcessingFieldsTest(unittest.TestCase):
|
||||
def test_resolve_dataset(self):
|
||||
self.assertEqual(resolve_dataset_by_type_name("围产期造血干细胞", "B0000001"), DATASET_HSC)
|
||||
self.assertEqual(resolve_dataset_by_type_name("脐带间充质干细胞", "BC0000003"), DATASET_MSC)
|
||||
self.assertEqual(resolve_dataset_by_type_name("", "UBMC2025001"), DATASET_UBMC)
|
||||
self.assertEqual(resolve_dataset_by_type_name("", "UC2026001"), DATASET_MSC)
|
||||
|
||||
def test_schema_not_empty(self):
|
||||
self.assertGreater(len(schema_payload(DATASET_HSC)), 10)
|
||||
self.assertGreater(len(schema_payload(DATASET_UBMC)), 10)
|
||||
self.assertGreater(len(schema_payload(DATASET_MSC)), 10)
|
||||
|
||||
def test_dept_acl(self):
|
||||
self.assertEqual(
|
||||
editable_depts_for_user(
|
||||
is_manager=True,
|
||||
dept_flags={DEPT_MARKET: False, DEPT_PRODUCTION: False, DEPT_QC: False},
|
||||
),
|
||||
{DEPT_MARKET, DEPT_PRODUCTION, DEPT_QC},
|
||||
)
|
||||
self.assertEqual(
|
||||
editable_depts_for_user(
|
||||
is_manager=False,
|
||||
dept_flags={DEPT_MARKET: False, DEPT_PRODUCTION: True, DEPT_QC: False},
|
||||
),
|
||||
{DEPT_PRODUCTION},
|
||||
)
|
||||
|
||||
def test_hsc_market_and_qc_fields(self):
|
||||
fmap = field_map(DATASET_HSC)
|
||||
self.assertEqual(fmap["motherName"].dept, DEPT_MARKET)
|
||||
self.assertEqual(fmap["cd34Count"].dept, DEPT_QC)
|
||||
self.assertEqual(fmap["originalBloodWeightG"].dept, DEPT_PRODUCTION)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user