test_product_title_exclusion.py
1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from types import SimpleNamespace
from config import QueryConfig
from query.product_title_exclusion import (
ProductTitleExclusionDetector,
ProductTitleExclusionRegistry,
)
def test_product_title_exclusion_detector_matches_translated_english_token():
query_config = QueryConfig(
product_title_exclusion_rules=[
{
"zh_trigger_terms": ["修身"],
"en_trigger_terms": ["fitted"],
"zh_title_exclusions": ["宽松"],
"en_title_exclusions": ["loose", "relaxed", "oversized", "baggy", "slouchy"],
}
]
)
detector = ProductTitleExclusionDetector(
ProductTitleExclusionRegistry.from_query_config(query_config),
tokenizer=lambda text: text.split(),
)
parsed_query = SimpleNamespace(
original_query="修身连衣裙",
query_normalized="修身 连衣裙",
rewritten_query="修身 连衣裙",
translations={"en": "fitted dress"},
)
profile = detector.detect(parsed_query)
assert profile.is_active is True
assert profile.all_zh_title_exclusions() == ["宽松"]
assert profile.all_en_title_exclusions() == [
"loose",
"relaxed",
"oversized",
"baggy",
"slouchy",
]