| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- """样本信息管理:进度展示码与证/保险已办理判定。"""
- import unittest
- from datetime import datetime
- from types import SimpleNamespace
- from app.services.sample_info_progress import (
- collection_progress,
- insurance_handled,
- qc_progress,
- reception_progress,
- storage_cert_handled,
- storage_progress,
- sync_handle_status_fields,
- )
- class TestCollectionProgress(unittest.TestCase):
- def test_empty(self):
- self.assertEqual(collection_progress(""), ("uncollected", "未采集"))
- def test_collected_includes_mid_states(self):
- for st in ("ycj", "jcz", "yrk"):
- self.assertEqual(collection_progress(st)[0], "collected")
- self.assertEqual(collection_progress("ycj")[1], "已采集")
- def test_void(self):
- self.assertEqual(collection_progress("yzf"), ("voided", "已作废"))
- class TestReceptionProgress(unittest.TestCase):
- def test_missing_or_pending(self):
- self.assertEqual(reception_progress(None)[0], "none")
- self.assertEqual(reception_progress({"acceptConclusion": "dqr"})[0], "none")
- self.assertEqual(reception_progress({"acceptConclusion": ""})[0], "none")
- def test_accept_reject(self):
- self.assertEqual(reception_progress({"acceptConclusion": "js"}), ("js", "已接收"))
- self.assertEqual(reception_progress({"acceptConclusion": "bj"}), ("bj", "拒收"))
- class TestQcProgress(unittest.TestCase):
- def test_none(self):
- self.assertEqual(qc_progress(None)[0], "incomplete")
- def test_complete_pass_or_fail(self):
- self.assertEqual(qc_progress({"qcConclusion": "tg", "qcWorkOrderStatus": "ywc"})[0], "complete")
- self.assertEqual(qc_progress({"qcConclusion": "btg", "qcWorkOrderStatus": "ywc"})[0], "complete")
- def test_void(self):
- self.assertEqual(qc_progress({"qcWorkOrderStatus": "yzf"})[0], "voided")
- def test_in_progress(self):
- self.assertEqual(qc_progress({"qcWorkOrderStatus": "ypz", "qcConclusion": ""})[0], "incomplete")
- class TestStorageProgress(unittest.TestCase):
- def test_none_or_pending(self):
- self.assertEqual(storage_progress(None)[0], "none")
- self.assertEqual(storage_progress({"storageStatus": "drk"})[0], "none")
- def test_in_and_reject(self):
- self.assertEqual(storage_progress({"storageStatus": "yrk"})[0], "yrk")
- self.assertEqual(
- storage_progress({"storageStatus": "drk", "reviewConclusion": "btg"})[0],
- "rejected",
- )
- class TestHandleFlags(unittest.TestCase):
- def test_cert_handle_time_wins(self):
- row = SimpleNamespace(handle_time=datetime(2026, 10, 1, 8, 0), make_status="0", make_date="")
- self.assertTrue(storage_cert_handled(row))
- def test_cert_legacy_make_status(self):
- row = SimpleNamespace(handle_time=None, make_status="1", make_date="")
- self.assertTrue(storage_cert_handled(row))
- def test_cert_legacy_make_date(self):
- row = SimpleNamespace(handle_time=None, make_status="0", make_date="20260101")
- self.assertTrue(storage_cert_handled(row))
- def test_cert_empty(self):
- self.assertFalse(storage_cert_handled(None))
- row = SimpleNamespace(handle_time=None, make_status="0", make_date="")
- self.assertFalse(storage_cert_handled(row))
- def test_insurance_legacy_todo_or_date(self):
- self.assertTrue(
- insurance_handled(SimpleNamespace(handle_time=None, todo_status="1", handle_date=""))
- )
- self.assertTrue(
- insurance_handled(SimpleNamespace(handle_time=None, todo_status="0", handle_date="20260131"))
- )
- self.assertFalse(
- insurance_handled(SimpleNamespace(handle_time=None, todo_status="0", handle_date=""))
- )
- class TestSyncHandleStatus(unittest.TestCase):
- def test_set_and_clear(self):
- ht = datetime(2026, 10, 5, 15, 0, 0)
- st, ymd = sync_handle_status_fields(ht)
- self.assertEqual(st, "1")
- self.assertEqual(ymd, "20261005")
- st2, ymd2 = sync_handle_status_fields(None)
- self.assertEqual(st2, "0")
- self.assertEqual(ymd2, "")
|