@@ -1,157 +0,0 @@
1−from collections import defaultdict
2−import mock
3−from searx.engines import swisscows
4−from searx.testing import SearxTestCase
5−
6−
7−class TestSwisscowsEngine(SearxTestCase):
8−
9− def test_request(self):
10− swisscows.supported_languages = ['de-AT', 'de-DE']
11− swisscows.language_aliases = {}
12− query = 'test_query'
13− dicto = defaultdict(dict)
14− dicto['pageno'] = 1
15− dicto['language'] = 'de-DE'
16− params = swisscows.request(query, dicto)
17− self.assertTrue('url' in params)
18− self.assertTrue(query in params['url'])
19− self.assertTrue('swisscows.ch' in params['url'])
20− self.assertTrue('uiLanguage=de' in params['url'])
21− self.assertTrue('region=de-DE' in params['url'])
22−
23− dicto['language'] = 'all'
24− params = swisscows.request(query, dicto)
25− self.assertTrue('uiLanguage=browser' in params['url'])
26− self.assertTrue('region=browser' in params['url'])
27−
28− dicto['category'] = 'images'
29− params = swisscows.request(query, dicto)
30− self.assertIn('image', params['url'])
31−
32− def test_response(self):
33− self.assertRaises(AttributeError, swisscows.response, None)
34− self.assertRaises(AttributeError, swisscows.response, [])
35− self.assertRaises(AttributeError, swisscows.response, '')
36− self.assertRaises(AttributeError, swisscows.response, '[]')
37−
38− response = mock.Mock(text=b'<html></html>')
39− self.assertEqual(swisscows.response(response), [])
40−
41− response = mock.Mock(text=b'<html></html>')
42− self.assertEqual(swisscows.response(response), [])
43−
44− html = b"""
45− <script>
46− App.Dispatcher.dispatch("initialize", {
47− html5history: true,
48− initialData: {"Request":
49− {"Page":1,
50− "ItemsCount":1,
51− "Query":"This should ",
52− "NormalizedQuery":"This should ",
53− "Region":"de-AT",
54− "UILanguage":"de"},
55− "Results":{"items":[
56− {"Title":"\uE000This should\uE001 be the title",
57− "Description":"\uE000This should\uE001 be the content.",
58− "Url":"http://this.should.be.the.link/",
59− "DisplayUrl":"www.\uE000this.should.be.the\uE001.link",
60− "Id":"782ef287-e439-451c-b380-6ebc14ba033d"},
61− {"Title":"Datei:This should1.svg",
62− "Url":"https://i.swisscows.ch/?link=http%3a%2f%2fts2.mm.This/should1.png",
63− "SourceUrl":"http://de.wikipedia.org/wiki/Datei:This should1.svg",
64− "DisplayUrl":"de.wikipedia.org/wiki/Datei:This should1.svg",
65− "Width":950,
66− "Height":534,
67− "FileSize":92100,
68− "ContentType":"image/jpeg",
69− "Thumbnail":{
70− "Url":"https://i.swisscows.ch/?link=http%3a%2f%2fts2.mm.This/should1.png",
71− "ContentType":"image/jpeg",
72− "Width":300,
73− "Height":168,
74− "FileSize":9134},
75− "Id":"6a97a542-8f65-425f-b7f6-1178c3aba7be"
76− }
77− ],"TotalCount":55300,
78− "Query":"This should "
79− },
80− "Images":[{"Title":"Datei:This should.svg",
81− "Url":"https://i.swisscows.ch/?link=http%3a%2f%2fts2.mm.This/should.png",
82− "SourceUrl":"http://de.wikipedia.org/wiki/Datei:This should.svg",
83− "DisplayUrl":"de.wikipedia.org/wiki/Datei:This should.svg",
84− "Width":1280,
85− "Height":677,
86− "FileSize":50053,
87− "ContentType":"image/png",
88− "Thumbnail":{"Url":"https://i.swisscows.ch/?link=http%3a%2f%2fts2.mm.This/should.png",
89− "ContentType":"image/png",
90− "Width":300,
91− "Height":158,
92− "FileSize":8023},
93− "Id":"ae230fd8-a06a-47d6-99d5-e74766d8143a"}]},
94− environment: "production"
95− }).then(function (options) {
96− $('#Search_Form').on('submit', function (e) {
97− if (!Modernizr.history) return;
98− e.preventDefault();
99−
100− var $form = $(this),
101− $query = $('#Query'),
102− query = $.trim($query.val()),
103− path = App.Router.makePath($form.attr('action'), null, $form.serializeObject())
104−
105− if (query.length) {
106− options.html5history ?
107− ReactRouter.HistoryLocation.push(path) :
108− ReactRouter.RefreshLocation.push(path);
109− }
110− else $('#Query').trigger('blur');
111− });
112−
113− });
114− </script>
115− """
116− response = mock.Mock(text=html)
117− results = swisscows.response(response)
118− self.assertEqual(type(results), list)
119− self.assertEqual(len(results), 3)
120− self.assertEqual(results[0]['title'], 'This should be the title')
121− self.assertEqual(results[0]['url'], 'http://this.should.be.the.link/')
122− self.assertEqual(results[0]['content'], 'This should be the content.')
123− self.assertEqual(results[1]['title'], 'Datei:This should1.svg')
124− self.assertEqual(results[1]['url'], 'http://de.wikipedia.org/wiki/Datei:This should1.svg')
125− self.assertEqual(results[1]['img_src'], 'http://ts2.mm.This/should1.png')
126− self.assertEqual(results[1]['template'], 'images.html')
127− self.assertEqual(results[2]['title'], 'Datei:This should.svg')
128− self.assertEqual(results[2]['url'], 'http://de.wikipedia.org/wiki/Datei:This should.svg')
129− self.assertEqual(results[2]['img_src'], 'http://ts2.mm.This/should.png')
130− self.assertEqual(results[2]['template'], 'images.html')
131−
132− def test_fetch_supported_languages(self):
133− html = """<html></html>"""
134− response = mock.Mock(text=html)
135− languages = swisscows._fetch_supported_languages(response)
136− self.assertEqual(type(languages), list)
137− self.assertEqual(len(languages), 0)
138−
139− html = """
140− <html>
141− <div id="regions-popup">
142− <div>
143− <ul>
144− <li><a data-search-language="browser"></a></li>
145− <li><a data-search-language="de-CH"></a></li>
146− <li><a data-search-language="fr-CH"></a></li>
147− </ul>
148− </div>
149− </div>
150− </html>
151− """
152− response = mock.Mock(text=html)
153− languages = swisscows._fetch_supported_languages(response)
154− self.assertEqual(type(languages), list)
155− self.assertEqual(len(languages), 3)
156− self.assertIn('de-CH', languages)
157− self.assertIn('fr-CH', languages)