test_sample_customer_service_register.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """样本客户服务登记:空不覆盖 merge 规则。"""
  2. import unittest
  3. from datetime import date, datetime
  4. from app.services.sample_customer_service_register import (
  5. has_any_customer_service_payload,
  6. merge_customer_service_fields,
  7. )
  8. class TestMergeCustomerServiceFields(unittest.TestCase):
  9. def test_merge_skips_empty_and_keeps_existing(self):
  10. existing = {"sms_send_status": "已发", "effective_address": "合肥"}
  11. incoming = {"sms_send_status": "", "effective_address": "亳州", "household_registered": "是"}
  12. merged = merge_customer_service_fields(existing, incoming)
  13. self.assertEqual(merged["sms_send_status"], "已发")
  14. self.assertEqual(merged["effective_address"], "亳州")
  15. self.assertEqual(merged["household_registered"], "是")
  16. def test_merge_all_sections_partial(self):
  17. existing = {"sms_send_status": "已发", "microbe_followup_status": None}
  18. incoming = {"microbe_followup_status": "回访成功"}
  19. merged = merge_customer_service_fields(existing, incoming)
  20. self.assertEqual(merged["sms_send_status"], "已发")
  21. self.assertEqual(merged["microbe_followup_status"], "回访成功")
  22. def test_merge_skips_missing_keys(self):
  23. existing = {"sms_send_date": None, "effective_address": "A"}
  24. incoming = {"effective_address": "B"}
  25. merged = merge_customer_service_fields(existing, incoming)
  26. self.assertEqual(merged["effective_address"], "B")
  27. self.assertIsNone(merged.get("sms_send_date"))
  28. def test_merge_skips_none_incoming(self):
  29. existing = {"sms_send_status": "已发", "effective_address": "合肥"}
  30. incoming = {"sms_send_status": None, "effective_address": "亳州"}
  31. merged = merge_customer_service_fields(existing, incoming)
  32. self.assertEqual(merged["sms_send_status"], "已发")
  33. self.assertEqual(merged["effective_address"], "亳州")
  34. def test_merge_skips_whitespace_only_incoming(self):
  35. existing = {"microbe_followup_status": "回访成功", "household_registered": "是"}
  36. incoming = {"microbe_followup_status": " ", "household_registered": "否"}
  37. merged = merge_customer_service_fields(existing, incoming)
  38. self.assertEqual(merged["microbe_followup_status"], "回访成功")
  39. self.assertEqual(merged["household_registered"], "否")
  40. def test_merge_passes_through_dates(self):
  41. d = date(2026, 10, 13)
  42. dt = datetime(2026, 10, 13, 14, 30, 0)
  43. existing = {"sms_send_date": None}
  44. incoming = {"sms_send_date": d, "einvoice_send_time": dt}
  45. merged = merge_customer_service_fields(existing, incoming)
  46. self.assertEqual(merged["sms_send_date"], d)
  47. self.assertEqual(merged["einvoice_send_time"], dt)
  48. class TestHasAnyCustomerServicePayload(unittest.TestCase):
  49. def test_empty_false(self):
  50. self.assertFalse(has_any_customer_service_payload({}))
  51. self.assertFalse(has_any_customer_service_payload({"sms_send_status": ""}))
  52. self.assertFalse(has_any_customer_service_payload({"sms_send_status": " "}))
  53. def test_nonempty_true(self):
  54. self.assertTrue(has_any_customer_service_payload({"sms_send_status": "已发"}))
  55. self.assertTrue(has_any_customer_service_payload({"effective_address": "合肥"}))
  56. if __name__ == "__main__":
  57. unittest.main()