| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- """CRM 第一批剩余资源:变更/模板/审批/调价函 In 过滤与 facet 白名单。"""
- from __future__ import annotations
- from sqlalchemy.dialects import mysql
- from app.services.crm.contract_change_list_filters import build_contract_change_column_filters
- from app.services.crm.contract_template_list_filters import build_contract_template_column_filters
- from app.services.crm.contract_approval_list_filters import build_contract_approval_column_filters
- from app.services.crm.price_letter_list_filters import build_price_letter_column_filters
- def _compile(clause) -> str:
- return str(
- clause.compile(dialect=mysql.dialect(), compile_kwargs={"literal_binds": True})
- ).lower()
- def test_change_contract_no_in():
- filters = build_contract_change_column_filters(contractNoIn="HT001,HT002")
- sqls = [_compile(f) for f in filters]
- assert any("contract_no" in s and "in (" in s for s in sqls)
- def test_change_contract_name_in():
- filters = build_contract_change_column_filters(contractNameIn="合同甲")
- sqls = [_compile(f) for f in filters]
- assert any("contract_name" in s and "in (" in s for s in sqls)
- def test_template_no_name_in():
- filters = build_contract_template_column_filters(
- templateNoIn="T01", templateNameIn="模板A"
- )
- sqls = [_compile(f) for f in filters]
- assert any("template_no" in s and "in (" in s for s in sqls)
- assert any("template_name" in s and "in (" in s for s in sqls)
- def test_approval_contract_no_name_in():
- filters = build_contract_approval_column_filters(
- contractNoIn="C1", contractNameIn="名"
- )
- sqls = [_compile(f) for f in filters]
- assert any("contract_no" in s and "in (" in s for s in sqls)
- assert any("contract_name" in s and "in (" in s for s in sqls)
- def test_price_letter_customer_product_in():
- filters = build_price_letter_column_filters(
- customerNameIn="客A", productNameIn="品B"
- )
- sqls = [_compile(f) for f in filters]
- assert any("customer_name" in s and "in (" in s for s in sqls)
- assert any("product_name" in s and "in (" in s for s in sqls)
- def test_facet_field_whitelists():
- from app.crud.crm.contract import (
- _CONTRACT_CHANGE_COLUMN_FACET_FIELDS,
- _CONTRACT_TEMPLATE_COLUMN_FACET_FIELDS,
- )
- from app.crud.crm.contract_approval import _CONTRACT_APPROVAL_COLUMN_FACET_FIELDS
- from app.crud.crm.price_letter import _PRICE_LETTER_COLUMN_FACET_FIELDS
- from app.crud.crm.supplier_info import _SUPPLIER_COLUMN_FACET_FIELDS
- assert set(_CONTRACT_CHANGE_COLUMN_FACET_FIELDS.keys()) == {"contractNo"}
- assert set(_CONTRACT_TEMPLATE_COLUMN_FACET_FIELDS.keys()) == {
- "templateNo",
- "templateName",
- }
- assert set(_CONTRACT_APPROVAL_COLUMN_FACET_FIELDS.keys()) == {
- "contractNo",
- "contractName",
- }
- assert set(_PRICE_LETTER_COLUMN_FACET_FIELDS.keys()) == {
- "customerName",
- "productName",
- }
- assert set(_SUPPLIER_COLUMN_FACET_FIELDS.keys()) == {
- "supplierCode",
- "supplierName",
- }
|