test_protocol_list_sample_reception_qc.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. db = MagicMock()
  71. q = MagicMock()
  72. db.query.return_value = q
  73. q.filter.return_value = q
  74. q.all.return_value = [wo]
  75. out = get_list_qc_conclusion_map_by_sample_codes(
  76. db, "t1", ["SC-001"], reception_source="cell_storage"
  77. )
  78. self.assertEqual(out["SC-001"]["qcConclusion"], "tg")
  79. self.assertEqual(out["SC-001"]["qcConclusionLabel"], "合格")
  80. if __name__ == "__main__":
  81. unittest.main()