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", ]