@@ -0,0 +1,130 @@
1+# -*- coding: utf-8 -*-
2+from collections import defaultdict
4+from searx.engines import mediawiki
5+from searx.testing import SearxTestCase
8+class TestMediawikiEngine(SearxTestCase):
10+ def test_request(self):
12+ dicto = defaultdict(dict)
14+ dicto['language'] = 'fr_FR'
15+ params = mediawiki.request(query, dicto)
16+ self.assertIn('url', params)
17+ self.assertIn(query, params['url'])
18+ self.assertIn('wikipedia.org', params['url'])
19+ self.assertIn('fr', params['url'])
21+ dicto['language'] = 'all'
22+ params = mediawiki.request(query, dicto)
23+ self.assertIn('en', params['url'])
25+ mediawiki.base_url = "http://test.url/"
26+ mediawiki.search_url = mediawiki.base_url +\
27+ 'w/api.php?action=query'\
32+ '&sroffset={offset}'\
33+ '&srlimit={limit}' # noqa
34+ params = mediawiki.request(query, dicto)
35+ self.assertIn('test.url', params['url'])
37+ def test_response(self):
38+ dicto = defaultdict(dict)
39+ dicto['language'] = 'fr'
40+ mediawiki.base_url = "https://{language}.wikipedia.org/"
42+ self.assertRaises(AttributeError, mediawiki.response, None)
43+ self.assertRaises(AttributeError, mediawiki.response, [])
44+ self.assertRaises(AttributeError, mediawiki.response, '')
45+ self.assertRaises(AttributeError, mediawiki.response, '[]')
47+ response = mock.Mock(text='{}', search_params=dicto)
48+ self.assertEqual(mediawiki.response(response), [])
50+ response = mock.Mock(text='{"data": []}', search_params=dicto)
51+ self.assertEqual(mediawiki.response(response), [])
67+ "title": "This is the title étude",
68+ "timestamp": "2014-12-19T17:42:52Z"
74+ response = mock.Mock(text=json, search_params=dicto)
75+ results = mediawiki.response(response)
76+ self.assertEqual(type(results), list)
77+ self.assertEqual(len(results), 1)
78+ self.assertEqual(results[0]['title'], u'This is the title étude')
79+ self.assertIn('fr.wikipedia.org', results[0]['url'])
80+ self.assertIn('This_is_the_title', results[0]['url'])
81+ self.assertIn('%C3%A9tude', results[0]['url'])
82+ self.assertEqual(results[0]['content'], '')
100+ response = mock.Mock(text=json, search_params=dicto)
101+ results = mediawiki.response(response)
102+ self.assertEqual(type(results), list)
103+ self.assertEqual(len(results), 0)
116+ response = mock.Mock(text=json, search_params=dicto)
117+ results = mediawiki.response(response)
118+ self.assertEqual(type(results), list)
119+ self.assertEqual(len(results), 0)
123+ {"id":200,"name":"Artist Name",
124+ "link":"http:\/\/www.mediawiki.com\/artist\/1217","type":"artist"}
127+ response = mock.Mock(text=json, search_params=dicto)
128+ results = mediawiki.response(response)
129+ self.assertEqual(type(results), list)
130+ self.assertEqual(len(results), 0)