on 2dff388 help sign in
searx/tests/unit/test_query.py
107 lines 3.9 kB history raw
1from searx.query import RawTextQuery
2from searx.testing import SearxTestCase
5class TestQuery(SearxTestCase):
7 def test_simple_query(self):
8 query_text = 'the query'
9 query = RawTextQuery(query_text, [])
11 self.assertEqual(query.getFullQuery(), query_text)
12 self.assertEqual(len(query.query_parts), 0)
13 self.assertEqual(len(query.user_query_parts), 2)
14 self.assertEqual(len(query.languages), 0)
15 self.assertFalse(query.specific)
17 def test_language_code(self):
18 language = 'es-ES'
19 query_text = 'the query'
20 full_query = ':' + language + ' ' + query_text
21 query = RawTextQuery(full_query, [])
23 self.assertEqual(query.getFullQuery(), full_query)
24 self.assertEqual(len(query.query_parts), 1)
25 self.assertEqual(len(query.languages), 1)
26 self.assertIn(language, query.languages)
27 self.assertFalse(query.specific)
29 def test_language_name(self):
30 language = 'english'
31 query_text = 'the query'
32 full_query = ':' + language + ' ' + query_text
33 query = RawTextQuery(full_query, [])
35 self.assertEqual(query.getFullQuery(), full_query)
36 self.assertEqual(len(query.query_parts), 1)
37 self.assertIn('en', query.languages)
38 self.assertFalse(query.specific)
40 def test_unlisted_language_code(self):
41 language = 'all'
42 query_text = 'the query'
43 full_query = ':' + language + ' ' + query_text
44 query = RawTextQuery(full_query, [])
46 self.assertEqual(query.getFullQuery(), full_query)
47 self.assertEqual(len(query.query_parts), 1)
48 self.assertIn('all', query.languages)
49 self.assertFalse(query.specific)
51 def test_invalid_language_code(self):
52 language = 'not_a_language'
53 query_text = 'the query'
54 full_query = ':' + language + ' ' + query_text
55 query = RawTextQuery(full_query, [])
57 self.assertEqual(query.getFullQuery(), full_query)
58 self.assertEqual(len(query.query_parts), 0)
59 self.assertEqual(len(query.languages), 0)
60 self.assertFalse(query.specific)
62 def test_empty_colon_in_query(self):
63 query_text = 'the : query'
64 query = RawTextQuery(query_text, [])
66 self.assertEqual(query.getFullQuery(), query_text)
67 self.assertEqual(len(query.query_parts), 0)
68 self.assertEqual(len(query.languages), 0)
69 self.assertFalse(query.specific)
71 def test_timeout_below100(self):
72 query_text = '<3 the query'
73 query = RawTextQuery(query_text, [])
75 self.assertEqual(query.getFullQuery(), query_text)
76 self.assertEqual(len(query.query_parts), 1)
77 self.assertEqual(query.timeout_limit, 3)
78 self.assertFalse(query.specific)
80 def test_timeout_above100(self):
81 query_text = '<350 the query'
82 query = RawTextQuery(query_text, [])
84 self.assertEqual(query.getFullQuery(), query_text)
85 self.assertEqual(len(query.query_parts), 1)
86 self.assertEqual(query.timeout_limit, 0.35)
87 self.assertFalse(query.specific)
89 def test_timeout_above1000(self):
90 query_text = '<3500 the query'
91 query = RawTextQuery(query_text, [])
93 self.assertEqual(query.getFullQuery(), query_text)
94 self.assertEqual(len(query.query_parts), 1)
95 self.assertEqual(query.timeout_limit, 3.5)
96 self.assertFalse(query.specific)
98 def test_timeout_invalid(self):
99 # invalid number: it is not bang but it is part of the query
100 query_text = '<xxx the query'
101 query = RawTextQuery(query_text, [])
103 self.assertEqual(query.getFullQuery(), query_text)
104 self.assertEqual(len(query.query_parts), 0)
105 self.assertEqual(query.getQuery(), query_text)
106 self.assertEqual(query.timeout_limit, None)
107 self.assertFalse(query.specific)