test_surrender_rules.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from datetime import UTC, date, datetime
  2. from zbt.domains.enrollment.models import Policy
  3. from zbt.domains.surrender.rules import SurrenderRule
  4. def test_policy_in_cooling_off_period_is_explained_as_full_refund() -> None:
  5. policy = Policy(
  6. id="01KZ0000000000000000000101",
  7. policy_no="ZBT-P-20260727-0101",
  8. order_id="01KZ0000000000000000000102",
  9. user_id="01KZ0000000000000000000103",
  10. product_id="01KZ0000000000000000000104",
  11. product_version_id="01KZ0000000000000000000105",
  12. plan_id="01KZ0000000000000000000106",
  13. premium_cents=15_900,
  14. currency="CNY",
  15. coverage_start=date(2026, 7, 27),
  16. coverage_end=date(2027, 7, 26),
  17. status="ACTIVE",
  18. issued_at=datetime(2026, 7, 26, 8, 0, tzinfo=UTC),
  19. )
  20. quote = SurrenderRule().quote(policy, date(2026, 7, 29))
  21. assert quote.cooling_off is True
  22. assert quote.refund_amount_cents == 15_900
  23. assert quote.deduction_cents == 0
  24. assert quote.refund_basis == "COOLING_OFF_FULL_REFUND"
  25. assert quote.refund_explanation == "保单仍在10天犹豫期内,按已交保费全额退还。"