test_protocol_list_sample_reception_qc.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. """协议/捐赠列表 sampleItems 接收与质检摘要字段。"""
  2. import unittest
  3. from unittest.mock import MagicMock
  4. class TestSampleItemReceptionQcFields(unittest.TestCase):
  5. """纯函数:把接收/质检结论摘要合并进列表样本行字段。"""
  6. def test_empty_when_no_reception_or_qc(self):
  7. from app.services.protocol_sample_list_summary import (
  8. build_sample_item_reception_qc_fields,
  9. )
  10. out = build_sample_item_reception_qc_fields(None, None)
  11. self.assertEqual(out["receptionAcceptConclusion"], "")
  12. self.assertEqual(out["receptionAcceptConclusionLabel"], "")
  13. self.assertEqual(out["receptionRemark"], "")
  14. self.assertEqual(out["qcConclusion"], "")
  15. self.assertEqual(out["qcConclusionLabel"], "")
  16. def test_accept_with_remark_and_qc_conclusion(self):
  17. from app.services.protocol_sample_list_summary import (
  18. build_sample_item_reception_qc_fields,
  19. )
  20. out = build_sample_item_reception_qc_fields(
  21. {"acceptConclusion": "js", "remark": "外观正常"},
  22. {"qcConclusion": "tg", "qcConclusionLabel": "合格"},
  23. )
  24. self.assertEqual(out["receptionAcceptConclusion"], "js")
  25. self.assertEqual(out["receptionAcceptConclusionLabel"], "接收")
  26. self.assertEqual(out["receptionRemark"], "外观正常")
  27. self.assertEqual(out["qcConclusion"], "tg")
  28. self.assertEqual(out["qcConclusionLabel"], "合格")
  29. def test_reject_without_qc(self):
  30. from app.services.protocol_sample_list_summary import (
  31. build_sample_item_reception_qc_fields,
  32. )
  33. out = build_sample_item_reception_qc_fields(
  34. {"acceptConclusion": "bj", "remark": "破损"},
  35. None,
  36. )
  37. self.assertEqual(out["receptionAcceptConclusion"], "bj")
  38. self.assertEqual(out["receptionAcceptConclusionLabel"], "拒收")
  39. self.assertEqual(out["receptionRemark"], "破损")
  40. self.assertEqual(out["qcConclusion"], "")
  41. self.assertEqual(out["qcConclusionLabel"], "")
  42. class TestListReceptionSummaryMap(unittest.TestCase):
  43. def test_keyed_by_sample_code(self):
  44. from app.services.protocol_sample_list_summary import (
  45. get_list_reception_summary_map_by_sample_codes,
  46. )
  47. rec = MagicMock()
  48. rec.sample_code = "SC-001"
  49. rec.accept_conclusion = "js"
  50. rec.remark = "ok"
  51. db = MagicMock()
  52. q = MagicMock()
  53. db.query.return_value = q
  54. q.filter.return_value = q
  55. q.all.return_value = [rec]
  56. out = get_list_reception_summary_map_by_sample_codes(
  57. db, "t1", ["SC-001"], reception_source="cell_storage"
  58. )
  59. self.assertEqual(out["SC-001"]["acceptConclusion"], "js")
  60. self.assertEqual(out["SC-001"]["remark"], "ok")
  61. class TestListQcConclusionMap(unittest.TestCase):
  62. def test_uses_stored_conclusion(self):
  63. from app.services.protocol_sample_list_summary import (
  64. get_list_qc_conclusion_map_by_sample_codes,
  65. )
  66. wo = MagicMock()
  67. wo.id = "wo1"
  68. wo.sample_code = "SC-001"
  69. wo.conclusion = "tg"
  70. wo.work_order_no = "ZJ202609010001"
  71. wo.work_order_status = "ywc"
  72. db = MagicMock()
  73. q = MagicMock()
  74. db.query.return_value = q
  75. q.filter.return_value = q
  76. q.all.return_value = [wo]
  77. out = get_list_qc_conclusion_map_by_sample_codes(
  78. db, "t1", ["SC-001"], reception_source="cell_storage"
  79. )
  80. self.assertEqual(out["SC-001"]["qcConclusion"], "tg")
  81. self.assertEqual(out["SC-001"]["qcConclusionLabel"], "合格")
  82. self.assertEqual(out["SC-001"]["qcWorkOrderNo"], "ZJ202609010001")
  83. self.assertEqual(out["SC-001"]["qcWorkOrderStatus"], "ywc")
  84. self.assertEqual(out["SC-001"]["qcWorkOrderStatusLabel"], "已完成")
  85. class TestListGateQcSummaryByReceptionIds(unittest.TestCase):
  86. def test_keyed_by_reception_id(self):
  87. from app.services.protocol_sample_list_summary import (
  88. get_list_gate_qc_summary_map_by_reception_ids,
  89. )
  90. wo = MagicMock()
  91. wo.id = "wo1"
  92. wo.reception_id = "rec1"
  93. wo.conclusion = "btg"
  94. wo.work_order_no = "ZJ202609010002"
  95. wo.work_order_status = "ypz"
  96. db = MagicMock()
  97. q = MagicMock()
  98. db.query.return_value = q
  99. q.filter.return_value = q
  100. q.all.return_value = [wo]
  101. out = get_list_gate_qc_summary_map_by_reception_ids(db, "t1", ["rec1"])
  102. self.assertEqual(out["rec1"]["qcWorkOrderNo"], "ZJ202609010002")
  103. self.assertEqual(out["rec1"]["qcWorkOrderStatus"], "ypz")
  104. self.assertEqual(out["rec1"]["qcWorkOrderStatusLabel"], "已配置")
  105. self.assertEqual(out["rec1"]["qcConclusion"], "btg")
  106. self.assertEqual(out["rec1"]["qcConclusionLabel"], "不合格")
  107. if __name__ == "__main__":
  108. unittest.main()