返回 last30days-skill
test_query_v3.py
根目录 / tests / test_query_v3.py
1 import unittest
2
3 from lib import query
4
5
6 class QueryV3Tests(unittest.TestCase):
7 def test_extract_core_subject_strips_prefix_and_noise(self):
8 result = query.extract_core_subject("What are the best Claude Code skills for startups?")
9 self.assertEqual("claude code startups", result)
10
11 def test_extract_core_subject_supports_suffix_stripping_and_max_words(self):
12 result = query.extract_core_subject(
13 "How to use Claude Code prompting techniques",
14 strip_suffixes=True,
15 max_words=2,
16 )
17 self.assertEqual("claude code", result)
18
19 def test_extract_core_subject_preserves_original_when_noise_removes_everything(self):
20 result = query.extract_core_subject("all tokens", noise=frozenset({"all", "tokens"}))
21 self.assertEqual("all tokens", result)
22
23 def test_extract_core_subject_handles_empty_query_and_custom_noise(self):
24 self.assertEqual("", query.extract_core_subject(" "))
25 result = query.extract_core_subject(
26 "OpenClaw release notes",
27 noise=frozenset({"release"}),
28 max_words=2,
29 )
30 self.assertEqual("openclaw notes", result)
31
32 def test_extract_compound_terms_finds_hyphenated_and_title_cased_phrases(self):
33 terms = query.extract_compound_terms("Best multi-agent patterns in Claude Code and React Native")
34 self.assertIn("multi-agent", terms)
35 self.assertIn("Claude Code", terms)
36 self.assertIn("React Native", terms)
37
38 if __name__ == "__main__":
39 unittest.main()
40
40 lines PYTHON