汇总近期业务改动:催缴菜单与后端、样本信息快捷登记与进度、运费关联、客户档案扩展、协议优惠/期次与押金划转,并同步 SQL 迁移与管理端页面收敛。 Co-authored-by: Cursor <cursoragent@cursor.com>
108 lines
4.1 KiB
Python
108 lines
4.1 KiB
Python
"""样本信息管理:进度展示码与证/保险已办理判定。"""
|
|
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, "")
|