on 00a7041 help sign in
searx/tests/unit/engines/test_archlinux.py
106 lines 3.4 kB history raw
1from collections import defaultdict
2import mock
3from searx.engines import archlinux
4from searx.testing import SearxTestCase
6domains = {
7 'all': 'https://wiki.archlinux.org',
8 'de': 'https://wiki.archlinux.de',
9 'fr': 'https://wiki.archlinux.fr',
10 'ja': 'https://wiki.archlinuxjp.org',
11 'ro': 'http://wiki.archlinux.ro',
12 'tr': 'http://archtr.org/wiki'
16class TestArchLinuxEngine(SearxTestCase):
18 def test_request(self):
19 query = 'test_query'
20 dic = defaultdict(dict)
21 dic['pageno'] = 1
22 dic['language'] = 'en_US'
23 params = archlinux.request(query, dic)
24 self.assertTrue('url' in params)
25 self.assertTrue(query in params['url'])
26 self.assertTrue('wiki.archlinux.org' in params['url'])
28 for lang, domain in domains.items():
29 dic['language'] = lang
30 params = archlinux.request(query, dic)
31 self.assertTrue(domain in params['url'])
33 def test_response(self):
34 response = mock.Mock(text='<html></html>',
35 search_params={'language': 'en_US'})
36 self.assertEqual(archlinux.response(response), [])
38 html = """
39 <ul class="mw-search-results">
40 <li>
41 <div class="mw-search-result-heading">
42 <a href="/index.php/ATI" title="ATI">ATI</a>
43 </div>
44 <div class="searchresult">
45 Lorem ipsum dolor sit amet
46 </div>
47 <div class="mw-search-result-data">
48 30 KB (4,630 words) - 19:04, 17 March 2016</div>
49 </li>
50 <li>
51 <div class="mw-search-result-heading">
52 <a href="/index.php/Frequently_asked_questions" title="Frequently asked questions">
53 Frequently asked questions
54 </a>
55 </div>
56 <div class="searchresult">
57 CPUs with AMDs instruction set "AMD64"
58 </div>
59 <div class="mw-search-result-data">
60 17 KB (2,722 words) - 20:13, 21 March 2016
61 </div>
62 </li>
63 <li>
64 <div class="mw-search-result-heading">
65 <a href="/index.php/CPU_frequency_scaling" title="CPU frequency scaling">CPU frequency scaling</a>
66 </div>
67 <div class="searchresult">
68 ondemand for AMD and older Intel CPU
69 </div>
70 <div class="mw-search-result-data">
71 15 KB (2,319 words) - 23:46, 16 March 2016
72 </div>
73 </li>
74 </ul>
75 """
77 expected = [
78 {
79 'title': 'ATI',
80 'url': 'https://wiki.archlinux.org/index.php/ATI'
81 },
82 {
83 'title': 'Frequently asked questions',
84 'url': 'https://wiki.archlinux.org/index.php/Frequently_asked_questions'
85 },
86 {
87 'title': 'CPU frequency scaling',
88 'url': 'https://wiki.archlinux.org/index.php/CPU_frequency_scaling'
89 }
90 ]
92 response = mock.Mock(text=html)
93 response.search_params = {
94 'language': 'en_US'
95 }
96 results = archlinux.response(response)
98 self.assertEqual(type(results), list)
99 self.assertEqual(len(results), len(expected))
101 i = 0
102 for exp in expected:
103 res = results[i]
104 i += 1
105 for key, value in exp.items():
106 self.assertEqual(res[key], value)