| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- from sqlalchemy.dialects import mysql
- from app.services.pl_internal_customer import INTERNAL_CUSTOMER_NAMES
- from app.services.pl_plan_contract_gap import compute_contract_gap_sides, plan_has_contract_gap_exists
- INTERNAL = next(iter(INTERNAL_CUSTOMER_NAMES))
- def test_both_external_no_contracts_gaps_both():
- sides = compute_contract_gap_sides(
- supplier_name="外部供方A",
- customer_name="外部需方B",
- supplier_contract_count=0,
- demander_contract_count=0,
- )
- assert sides == ["supplier", "demander"]
- def test_internal_supplier_external_demander_missing_only_demander():
- sides = compute_contract_gap_sides(
- supplier_name=INTERNAL,
- customer_name="外部需方B",
- supplier_contract_count=0,
- demander_contract_count=0,
- )
- assert sides == ["demander"]
- def test_both_internal_no_gap():
- sides = compute_contract_gap_sides(
- supplier_name=INTERNAL,
- customer_name=INTERNAL,
- supplier_contract_count=0,
- demander_contract_count=0,
- )
- assert sides == []
- def test_external_with_contracts_no_gap():
- sides = compute_contract_gap_sides(
- supplier_name="外部供方A",
- customer_name="外部需方B",
- supplier_contract_count=1,
- demander_contract_count=2,
- )
- assert sides == []
- def test_empty_names_treated_as_non_internal_gap_both():
- sides = compute_contract_gap_sides(
- supplier_name=None,
- customer_name="",
- supplier_contract_count=0,
- demander_contract_count=0,
- )
- assert sides == ["supplier", "demander"]
- def _compile(clause) -> str:
- return str(
- clause.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})
- ).lower()
- def test_plan_has_contract_gap_exists_mentions_contract_and_internal_names():
- clause = plan_has_contract_gap_exists("shanxia2.0")
- sql = _compile(clause)
- assert "pl_plan_contract" in sql
- assert "supplier" in sql
- assert "demander" in sql
|