95 lines
2.8 KiB
Python
95 lines
2.8 KiB
Python
"""产品/客户列表 keyword:名称/编号/拼音首字母 OR 匹配。"""
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
from app.crud.crm.customer import list_customer_options, list_customers
|
|
from app.crud.crm.product import list_products
|
|
|
|
|
|
def test_list_products_keyword_includes_name_and_pinyin():
|
|
db = MagicMock()
|
|
q = MagicMock()
|
|
db.query.return_value = q
|
|
q.filter.return_value = q
|
|
q.order_by.return_value = q
|
|
q.with_entities.return_value = q
|
|
q.scalar.return_value = 0
|
|
q.offset.return_value = q
|
|
q.limit.return_value = q
|
|
q.all.return_value = []
|
|
|
|
list_products(db, "shanxia2.0", keyword="gyls")
|
|
|
|
assert q.filter.call_count >= 2
|
|
keyword_expr = " ".join(str(a) for a in q.filter.call_args_list[1][0])
|
|
assert "product_name" in keyword_expr
|
|
assert "name_pinyin_abbr" in keyword_expr
|
|
assert "product_no" in keyword_expr
|
|
|
|
|
|
def test_list_products_keyword_selector_mode_excludes_product_no_includes_model():
|
|
"""选择器:名称/拼音/规格型号,不匹配产品编号。"""
|
|
db = MagicMock()
|
|
q = MagicMock()
|
|
db.query.return_value = q
|
|
q.filter.return_value = q
|
|
q.order_by.return_value = q
|
|
q.with_entities.return_value = q
|
|
q.scalar.return_value = 0
|
|
q.offset.return_value = q
|
|
q.limit.return_value = q
|
|
q.all.return_value = []
|
|
|
|
list_products(
|
|
db,
|
|
"shanxia2.0",
|
|
keyword="32",
|
|
match_product_no=False,
|
|
match_model=True,
|
|
)
|
|
|
|
assert q.filter.call_count >= 2
|
|
keyword_expr = " ".join(str(a) for a in q.filter.call_args_list[1][0])
|
|
assert "product_name" in keyword_expr
|
|
assert "name_pinyin_abbr" in keyword_expr
|
|
assert "model" in keyword_expr
|
|
assert "product_no" not in keyword_expr
|
|
|
|
|
|
def test_list_customers_keyword_includes_name_and_pinyin():
|
|
db = MagicMock()
|
|
q = MagicMock()
|
|
db.query.return_value = q
|
|
q.filter.return_value = q
|
|
q.order_by.return_value = q
|
|
q.with_entities.return_value = q
|
|
q.scalar.return_value = 0
|
|
q.offset.return_value = q
|
|
q.limit.return_value = q
|
|
q.all.return_value = []
|
|
|
|
list_customers(db, "shanxia2.0", keyword="sxhg")
|
|
|
|
assert q.filter.call_count >= 2
|
|
keyword_expr = " ".join(str(a) for a in q.filter.call_args_list[1][0])
|
|
assert "customer_name" in keyword_expr
|
|
assert "name_pinyin_abbr" in keyword_expr
|
|
|
|
|
|
def test_list_customer_options_keyword_includes_name_and_pinyin():
|
|
db = MagicMock()
|
|
q = MagicMock()
|
|
db.query.return_value = q
|
|
q.filter.return_value = q
|
|
q.order_by.return_value = q
|
|
q.limit.return_value = q
|
|
q.all.return_value = []
|
|
|
|
list_customer_options(db, "shanxia2.0", keyword="sxhg")
|
|
|
|
assert q.filter.call_count >= 2
|
|
keyword_expr = " ".join(str(a) for a in q.filter.call_args_list[1][0])
|
|
assert "customer_name" in keyword_expr
|
|
assert "name_pinyin_abbr" in keyword_expr
|