test_crm_customer_column_facet.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """客户列头 customerNoIn / customerNameIn / shortNameIn 单测。"""
  2. from __future__ import annotations
  3. from sqlalchemy.dialects import mysql
  4. from app.services.crm.customer_list_filters import build_customer_column_filters
  5. def _compile(clause) -> str:
  6. return str(
  7. clause.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})
  8. ).lower()
  9. def test_customer_no_in():
  10. filters = build_customer_column_filters(customer_no_in="C001,C002")
  11. assert len(filters) == 1
  12. sql = _compile(filters[0])
  13. assert "customer_no" in sql
  14. assert "in (" in sql
  15. def test_customer_name_in_skips_fuzzy():
  16. filters = build_customer_column_filters(customer_name_in="甲", customer_name="ignored")
  17. assert len(filters) == 1
  18. sql = _compile(filters[0])
  19. assert "in (" in sql
  20. assert "like" not in sql
  21. def test_short_name_in():
  22. filters = build_customer_column_filters(short_name_in="简称A")
  23. assert len(filters) == 1
  24. assert "short_name" in _compile(filters[0])
  25. def test_customer_facet_field_whitelist():
  26. from app.crud.crm.customer import _CUSTOMER_COLUMN_FACET_FIELDS
  27. assert set(_CUSTOMER_COLUMN_FACET_FIELDS.keys()) == {
  28. "customerNo",
  29. "customerName",
  30. "shortName",
  31. }