on master help sign in
Mediawiki's unit test
commita96208be965bfc082524f3e22d9339364e2a9976 authorCqoicebordel <Cqoicebordel@users.noreply.github.com> dateTue 3 Feb 2015, 19:56 (12 years ago) parent1ea5bc6
3 files changed+134−6
searx/engines/currency_convert.py+3−6 searx/tests/engines/test_mediawiki.py+130 searx/tests/test_engines.py+1
searx/engines/currency_convert.py+3−6
@@ -13,12 +13,9 @@ def request(query, params):
1313 if not m:
1414 # wrong query
1515 return params
16− try:
17− ammount, from_currency, to_currency = m.groups()
18− ammount = float(ammount)
19− except:
20− # wrong params
21− return params
16+
17+ ammount, from_currency, to_currency = m.groups()
18+ ammount = float(ammount)
2219
2320 q = (from_currency + to_currency).upper()
2421
searx/tests/engines/test_mediawiki.pynew file+130
@@ -0,0 +1,130 @@
1+# -*- coding: utf-8 -*-
2+from collections import defaultdict
3+import mock
4+from searx.engines import mediawiki
5+from searx.testing import SearxTestCase
6+
7+
8+class TestMediawikiEngine(SearxTestCase):
9+
10+ def test_request(self):
11+ query = 'test_query'
12+ dicto = defaultdict(dict)
13+ dicto['pageno'] = 1
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'])
20+
21+ dicto['language'] = 'all'
22+ params = mediawiki.request(query, dicto)
23+ self.assertIn('en', params['url'])
24+
25+ mediawiki.base_url = "http://test.url/"
26+ mediawiki.search_url = mediawiki.base_url +\
27+ 'w/api.php?action=query'\
28+ '&list=search'\
29+ '&{query}'\
30+ '&srprop=timestamp'\
31+ '&format=json'\
32+ '&sroffset={offset}'\
33+ '&srlimit={limit}' # noqa
34+ params = mediawiki.request(query, dicto)
35+ self.assertIn('test.url', params['url'])
36+
37+ def test_response(self):
38+ dicto = defaultdict(dict)
39+ dicto['language'] = 'fr'
40+ mediawiki.base_url = "https://{language}.wikipedia.org/"
41+
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, '[]')
46+
47+ response = mock.Mock(text='{}', search_params=dicto)
48+ self.assertEqual(mediawiki.response(response), [])
49+
50+ response = mock.Mock(text='{"data": []}', search_params=dicto)
51+ self.assertEqual(mediawiki.response(response), [])
52+
53+ json = """
54+ {
55+ "query-continue": {
56+ "search": {
57+ "sroffset": 1
58+ }
59+ },
60+ "query": {
61+ "searchinfo": {
62+ "totalhits": 29721
63+ },
64+ "search": [
65+ {
66+ "ns": 0,
67+ "title": "This is the title étude",
68+ "timestamp": "2014-12-19T17:42:52Z"
69+ }
70+ ]
71+ }
72+ }
73+ """
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'], '')
83+
84+ json = """
85+ {
86+ "query-continue": {
87+ "search": {
88+ "sroffset": 1
89+ }
90+ },
91+ "query": {
92+ "searchinfo": {
93+ "totalhits": 29721
94+ },
95+ "search": [
96+ ]
97+ }
98+ }
99+ """
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)
104+
105+ json = """
106+ {
107+ "query-continue": {
108+ "search": {
109+ "sroffset": 1
110+ }
111+ },
112+ "query": {
113+ }
114+ }
115+ """
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)
120+
121+ json = """
122+ {"toto":[
123+ {"id":200,"name":"Artist Name",
124+ "link":"http:\/\/www.mediawiki.com\/artist\/1217","type":"artist"}
125+ ]}
126+ """
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)
searx/tests/test_engines.py+1
@@ -16,6 +16,7 @@ from searx.tests.engines.test_www1x import * # noqa
1616from searx.tests.engines.test_google_images import * # noqa
1717from searx.tests.engines.test_google_news import * # noqa
1818from searx.tests.engines.test_kickass import * # noqa
19+from searx.tests.engines.test_mediawiki import * # noqa
1920from searx.tests.engines.test_mixcloud import * # noqa
2021from searx.tests.engines.test_piratebay import * # noqa
2122from searx.tests.engines.test_searchcode_code import * # noqa