按方案 A 增加租户级 ACL(字段+人员),详情返回可编辑字段,保存改为服务端 merge;弹窗 footer 提供权限配置入口。关联 #93。 Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""储存证质检字段 ACL:合法字段与 scope。"""
|
|
import unittest
|
|
|
|
from app.services.sample_storage_cert_qc import (
|
|
ACL_SCOPE_PRODUCTION,
|
|
ACL_SCOPE_QC,
|
|
ALL_STORAGE_CERT_QC_FIELD_KEYS,
|
|
SAMPLE_TYPE_KEY_UC_MSC,
|
|
dumps_field_keys,
|
|
legal_field_keys_for_type,
|
|
loads_field_keys,
|
|
)
|
|
|
|
|
|
class TestAclFieldKeys(unittest.TestCase):
|
|
def test_uc_msc_excludes_mother_nucleic_acids(self):
|
|
keys = legal_field_keys_for_type(SAMPLE_TYPE_KEY_UC_MSC)
|
|
self.assertNotIn("mother_hbv_dna", keys)
|
|
self.assertIn("mother_hbsag", keys)
|
|
|
|
def test_roundtrip_field_keys(self):
|
|
raw = dumps_field_keys(["receive_time", "bacteria_test", "receive_time", ""])
|
|
self.assertEqual(loads_field_keys(raw), ["bacteria_test", "receive_time"])
|
|
|
|
def test_all_keys_cover_common_fields(self):
|
|
self.assertIn("receive_time", ALL_STORAGE_CERT_QC_FIELD_KEYS)
|
|
self.assertIn("mother_anti_hiv", ALL_STORAGE_CERT_QC_FIELD_KEYS)
|
|
|
|
def test_scopes(self):
|
|
self.assertEqual(ACL_SCOPE_QC, "qc")
|
|
self.assertEqual(ACL_SCOPE_PRODUCTION, "production")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|