Browse Source

Mediawiki's unit test

Cqoicebordel 10 years ago
parent
commit
a96208be96

+ 3
- 6
searx/engines/currency_convert.py View File

@@ -13,12 +13,9 @@ def request(query, params):
13 13
     if not m:
14 14
         # wrong query
15 15
         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)
22 19
 
23 20
     q = (from_currency + to_currency).upper()
24 21
 

+ 130
- 0
searx/tests/engines/test_mediawiki.py View File

@@ -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)

+ 1
- 0
searx/tests/test_engines.py View File

@@ -16,6 +16,7 @@ from searx.tests.engines.test_www1x import *  # noqa
16 16
 from searx.tests.engines.test_google_images import *  # noqa
17 17
 from searx.tests.engines.test_google_news import *  # noqa
18 18
 from searx.tests.engines.test_kickass import *  # noqa
19
+from searx.tests.engines.test_mediawiki import *  # noqa
19 20
 from searx.tests.engines.test_mixcloud import *  # noqa
20 21
 from searx.tests.engines.test_piratebay import *  # noqa
21 22
 from searx.tests.engines.test_searchcode_code import *  # noqa