[fix] test in wolframalpha_noapi

This commit is contained in:
a01200356 2016-01-03 22:03:33 -06:00
parent d997265e55
commit 2a15944b58
2 changed files with 42 additions and 5 deletions

View File

@ -41,8 +41,8 @@ def response(resp):
# the answer is inside a js function # the answer is inside a js function
# answer can be located in different 'pods', although by default it should be in pod_0200 # answer can be located in different 'pods', although by default it should be in pod_0200
possible_locations = ['pod_0200\.push(.*)\n', possible_locations = ['pod_0200\.push\((.*)',
'pod_0100\.push(.*)\n'] 'pod_0100\.push\((.*)']
# failed result # failed result
if dom.xpath(failure_xpath): if dom.xpath(failure_xpath):
@ -62,7 +62,10 @@ def response(resp):
if line: if line:
# extract answer from json # extract answer from json
answer = line[line.find('{'):line.rfind('}')+1] answer = line[line.find('{'):line.rfind('}')+1]
answer = loads(answer.encode('unicode-escape')) try:
answer = loads(answer)
except Exception:
answer = loads(answer.encode('unicode-escape'))
answer = answer['stringified'] answer = answer['stringified']
# clean plaintext answer # clean plaintext answer

View File

@ -149,11 +149,45 @@ class TestWolframAlphaNoAPIEngine(SearxTestCase):
</body> </body>
</html> </html>
""" """
# test output in htmlentity # test output with htmlentity
response = mock.Mock(text=html) response = mock.Mock(text=html)
results = wolframalpha_noapi.response(response) results = wolframalpha_noapi.response(response)
self.assertEqual(type(results), list) self.assertEqual(type(results), list)
self.assertEqual(len(results), 2) self.assertEqual(len(results), 2)
self.assertIn("¥".decode('utf-8'), results[0]['answer']) self.assertIn('¥'.decode('utf-8'), results[0]['answer'])
self.assertIn('1 euro to yen - Wolfram|Alpha', results[1]['title']) self.assertIn('1 euro to yen - Wolfram|Alpha', results[1]['title'])
self.assertEquals('http://www.wolframalpha.com/input/?i=+1+euro+to+yen', results[1]['url']) self.assertEquals('http://www.wolframalpha.com/input/?i=+1+euro+to+yen', results[1]['url'])
html = """
<!DOCTYPE html>
<title> distance from nairobi to kyoto in inches - Wolfram|Alpha</title>
<meta charset="utf-8" />
<body>
<script type="text/javascript">
try {
if (typeof context.jsonArray.popups.pod_0100 == "undefined" ) {
context.jsonArray.popups.pod_0100 = [];
}
[...].pod_0100.push( {"stringified": "convert distance | from | Nairobi, Kenya\nto | Kyoto, Japan to inches"});
} catch(e) { }
try {
if (typeof context.jsonArray.popups.pod_0200 == "undefined" ) {
context.jsonArray.popups.pod_0200 = [];
}
pod_0200.push({"stringified": "4.295&times;10^8 inches","mOutput": "Quantity[4.295×10^8,&amp;quot;Inches&amp;quot;]"});
} catch(e) { }
</script>
</body>
</html>
"""
# test output with utf-8 character
response = mock.Mock(text=html)
results = wolframalpha_noapi.response(response)
self.assertEqual(type(results), list)
self.assertEqual(len(results), 2)
self.assertIn('4.295×10^8 inches'.decode('utf-8'), results[0]['answer'])
self.assertIn('distance from nairobi to kyoto in inches - Wolfram|Alpha', results[1]['title'])
self.assertEquals('http://www.wolframalpha.com/input/?i=+distance+from+nairobi+to+kyoto+in+inches',
results[1]['url'])