| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- """CRM 列头 facet 上下文:剥离本列键。"""
- from typing import Optional
- from pydantic import BaseModel, ConfigDict, Field
- from app.services.crm.facet_context import (
- clear_facet_field_kwargs,
- facet_filter_kwargs_from_body,
- )
- def test_clear_facet_field_kwargs_customer_no():
- kwargs = {
- "customer_no": "C1",
- "customer_no_in": "C1,C2",
- "customer_name": "Acme",
- "customer_name_in": None,
- }
- out = clear_facet_field_kwargs(kwargs, "customerNo")
- assert out["customer_no"] is None
- assert out["customer_no_in"] is None
- assert out["customer_name"] == "Acme"
- def test_clear_facet_field_kwargs_quote_no():
- kwargs = {"quote_no_in": "Q1,Q2", "customer_name_in": "A,B"}
- out = clear_facet_field_kwargs(kwargs, "quoteNo")
- assert out["quote_no_in"] is None
- assert out["customer_name_in"] == "A,B"
- class _FacetBody(BaseModel):
- model_config = ConfigDict(extra="allow")
- field: str
- keyword: Optional[str] = None
- limit: Optional[int] = 500
- customer_name_in: Optional[str] = Field(default=None, alias="customerNameIn")
- product_name: Optional[str] = Field(default=None, alias="productName")
- page: Optional[int] = None
- pageSize: Optional[int] = None
- def test_facet_filter_kwargs_from_body_strips_meta_and_self():
- body = _FacetBody.model_validate(
- {
- "field": "customerName",
- "keyword": "x",
- "limit": 50,
- "customerNameIn": "A,B",
- "productName": "P1",
- "page": 1,
- "pageSize": 20,
- "statusIn": "on",
- }
- )
- out = facet_filter_kwargs_from_body(body, "customerName")
- assert out.get("customer_name_in") is None
- assert out.get("product_name") == "P1"
- assert out.get("status_in") == "on"
- assert "page" not in out
- assert "pageSize" not in out
- assert "field" not in out
|