Files
zkxw/backend/tests/test_sample_storage_cert_qc.py
T
zlwuandCursor 5dad1bb0e3 fix: 协议子资源单事务保存,并补齐样本编码/OA/质检等近期能力
锁定缴费校验失败时整单回滚,避免样本半成功落库;前端禁止删除锁定缴费样本,改码走更正编码。同步落地样本更正、采集微信通知、OA提及未读、细胞产品套餐与相关迁移文档。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-26 11:02:25 +08:00

94 lines
3.0 KiB
Python

"""储存证质检信息:类型键与 payload 规范化。"""
import unittest
from types import SimpleNamespace
from app.crud.sample_storage_cert_qc import _row_to_dict
from app.services.sample_storage_cert_qc import (
SAMPLE_TYPE_KEY_PERINATAL_HSC,
SAMPLE_TYPE_KEY_UC_MSC,
empty_detail,
normalize_payload,
resolve_sample_type_key,
supports_storage_cert_qc,
)
class TestResolveSampleTypeKey(unittest.TestCase):
def test_hsc(self):
self.assertEqual(resolve_sample_type_key("围产期造血干细胞"), SAMPLE_TYPE_KEY_PERINATAL_HSC)
def test_msc(self):
self.assertEqual(resolve_sample_type_key("脐带间充质干细胞"), SAMPLE_TYPE_KEY_UC_MSC)
def test_other(self):
self.assertIsNone(resolve_sample_type_key("胎盘亚全能干细胞"))
self.assertIsNone(resolve_sample_type_key(""))
def test_supports(self):
self.assertTrue(supports_storage_cert_qc("围产期造血干细胞"))
self.assertFalse(supports_storage_cert_qc("其他"))
class TestNormalizePayload(unittest.TestCase):
def test_rejects_non_object(self):
with self.assertRaises(ValueError):
normalize_payload([])
with self.assertRaises(ValueError):
normalize_payload("x")
def test_keeps_dict_stringifies_keys(self):
out = normalize_payload({"viability_pct": 90.4, 1: "bad"})
self.assertEqual(out["viability_pct"], 90.4)
self.assertNotIn(1, out)
class TestEmptyDetail(unittest.TestCase):
def test_shape(self):
d = empty_detail(
sample_code="B1",
lab_flow_code="LAB-001",
protocol_code="P1",
mother_name="张三",
sample_type_name="围产期造血干细胞",
sample_type_key="perinatal_hsc",
)
self.assertFalse(d["filledFlag"])
self.assertEqual(d["payload"], {})
self.assertEqual(d["sampleCode"], "B1")
self.assertEqual(d["labFlowCode"], "LAB-001")
def test_lab_flow_defaults_empty(self):
d = empty_detail(sample_code="B1")
self.assertEqual(d["labFlowCode"], "")
class TestRowToDict(unittest.TestCase):
def test_filled(self):
row = SimpleNamespace(
id="1",
sample_code="B1",
sample_type_key="perinatal_hsc",
collection_protocol_id="P",
qc_work_order_id="W",
filled_flag="1",
payload='{"viability_pct":"90"}',
create_time=None,
update_time=None,
)
d = _row_to_dict(
row,
lab_flow_code="LAB-001",
protocol_code="C1",
mother_name="李",
sample_type_name="围产期造血干细胞",
)
self.assertTrue(d["filledFlag"])
self.assertEqual(d["payload"]["viability_pct"], "90")
self.assertEqual(d["sampleCode"], "B1")
self.assertEqual(d["labFlowCode"], "LAB-001")
self.assertEqual(d["protocolCode"], "C1")
if __name__ == "__main__":
unittest.main()