| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from datetime import date
- from app.services.pl_purchase_cert_service import (
- PURCHASE_CERT_WARN_TONS,
- calc_cert_remain,
- permit_nos_cover_purchase,
- plate_allowed_on_transport,
- product_name_matches,
- validate_link_rules,
- )
- def test_calc_cert_remain():
- assert calc_cert_remain(total=1700, occupied=152) == 1548.0
- assert calc_cert_remain(total=100, occupied=100) == 0.0
- def test_plate_allowed():
- plates = "皖H57837、皖HA3690,皖LB1283"
- assert plate_allowed_on_transport("皖H57837", plates) is True
- assert plate_allowed_on_transport("皖A00000", plates) is False
- def test_product_name_contains_match():
- assert product_name_matches(plan_name="98% 工业硫酸", cert_name="硫酸") is True
- assert product_name_matches(plan_name="液碱", cert_name="硫酸") is False
- def test_permit_nos_cover():
- assert permit_nos_cover_purchase("G1,G2", "G2") is True
- assert permit_nos_cover_purchase("G1", "G9") is False
- def test_validate_link_rules_ok():
- err = validate_link_rules(
- plan_qty=34,
- purchase_remain=100,
- transport_remain=50,
- plan_plate="皖H57837",
- transport_plates="皖H57837",
- plan_product_name="硫酸",
- purchase_product_name="硫酸",
- purchase_cert_no="G34260485131004",
- permit_cert_nos="G34260485131004",
- purchase_valid_from=date(2026, 8, 13),
- purchase_valid_to=date(2026, 9, 12),
- transport_valid_from=date(2026, 8, 20),
- transport_valid_to=date(2026, 11, 19),
- today=date(2026, 8, 25),
- )
- assert err is None
- def test_validate_link_rules_qty_fail():
- err = validate_link_rules(
- plan_qty=200,
- purchase_remain=100,
- transport_remain=50,
- plan_plate="皖H57837",
- transport_plates="皖H57837",
- plan_product_name="硫酸",
- purchase_product_name="硫酸",
- purchase_cert_no="G1",
- permit_cert_nos="G1",
- purchase_valid_from=date(2026, 1, 1),
- purchase_valid_to=date(2026, 12, 31),
- transport_valid_from=date(2026, 1, 1),
- transport_valid_to=date(2026, 12, 31),
- today=date(2026, 6, 1),
- )
- assert err is not None
- assert "购买证余量" in err or "运输证余量" in err
- def test_warn_threshold_constant():
- assert PURCHASE_CERT_WARN_TONS == 64
|