"""储存证质检信息:类型键与 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()