diff options
Diffstat (limited to 'tests/unit')
| -rw-r--r-- | tests/unit/engines/test_dailymotion.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_deezer.py | 4 | ||||
| -rw-r--r-- | tests/unit/engines/test_deviantart.py | 48 | ||||
| -rw-r--r-- | tests/unit/engines/test_duckduckgo.py | 1 | ||||
| -rw-r--r-- | tests/unit/engines/test_flickr.py | 10 | ||||
| -rw-r--r-- | tests/unit/engines/test_flickr_noapi.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_google.py | 1 | ||||
| -rw-r--r-- | tests/unit/engines/test_google_images.py | 1 | ||||
| -rw-r--r-- | tests/unit/engines/test_ina.py | 24 | ||||
| -rw-r--r-- | tests/unit/engines/test_mediawiki.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_mixcloud.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_searchcode_code.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_searchcode_doc.py | 2 | ||||
| -rw-r--r-- | tests/unit/engines/test_wikidata.py | 504 | ||||
| -rw-r--r-- | tests/unit/engines/test_wolframalpha_noapi.py | 6 | ||||
| -rw-r--r-- | tests/unit/engines/test_yahoo.py | 1 | ||||
| -rw-r--r-- | tests/unit/test_webapp.py | 4 |
17 files changed, 547 insertions, 69 deletions
diff --git a/tests/unit/engines/test_dailymotion.py b/tests/unit/engines/test_dailymotion.py index 4c31ff5d5..368b3a7a5 100644 --- a/tests/unit/engines/test_dailymotion.py +++ b/tests/unit/engines/test_dailymotion.py @@ -62,7 +62,7 @@ class TestDailymotionEngine(SearxTestCase): self.assertEqual(results[0]['content'], 'Description') self.assertIn('x2fit7q', results[0]['embedded']) - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.dailymotion.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_deezer.py b/tests/unit/engines/test_deezer.py index ad09d2a2c..cfef852af 100644 --- a/tests/unit/engines/test_deezer.py +++ b/tests/unit/engines/test_deezer.py @@ -27,7 +27,7 @@ class TestDeezerEngine(SearxTestCase): response = mock.Mock(text='{"data": []}') self.assertEqual(deezer.response(response), []) - json = """ + json = r""" {"data":[ {"id":100, "title":"Title of track", "link":"https:\/\/www.deezer.com\/track\/1094042","duration":232, @@ -45,7 +45,7 @@ class TestDeezerEngine(SearxTestCase): self.assertEqual(results[0]['content'], 'Artist Name • Album Title • Title of track') self.assertTrue('100' in results[0]['embedded']) - json = """ + json = r""" {"data":[ {"id":200,"name":"Artist Name", "link":"https:\/\/www.deezer.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_deviantart.py b/tests/unit/engines/test_deviantart.py index 78a391334..75c59f760 100644 --- a/tests/unit/engines/test_deviantart.py +++ b/tests/unit/engines/test_deviantart.py @@ -10,6 +10,7 @@ class TestDeviantartEngine(SearxTestCase): query = 'test_query' dicto = defaultdict(dict) dicto['pageno'] = 0 + dicto['time_range'] = '' params = deviantart.request(query, dicto) self.assertTrue('url' in params) self.assertTrue(query in params['url']) @@ -28,44 +29,13 @@ class TestDeviantartEngine(SearxTestCase): self.assertEqual(deviantart.response(response), []) html = """ - <div class="tt-a tt-fh tt-boxed" collect_rid="1:149167425" - usericon="http://a.deviantart.net/avatars/t/e/test-0.gif" userid="233301" - username="test-0" symbol="~" category="digitalart/animation"> - <span class="tt-w" style="width: auto; max-width: 277px;"> - <span class="tt-fh-tc" style="width: 202px;"> - <span class="tt-bb" style="width: 202px;"> - </span> - <span class="shadow"> - <a class="thumb" href="http://url.of.result/2nd.part.of.url" - title="Behoimi BE Animation Test by test-0, Jan 4, - 2010 in Digital Art > Animation"> <i></i> - <img width="200" height="200" alt="Test" - src="http://url.of.thumbnail" data-src="http://th08.deviantart.net/test.jpg"> - </a> - </span> - <!-- ^TTT --> - </span> - <span class="details"> - <a href="http://test-0.deviantart.com/art/Test" class="t" - title="Behoimi BE Animation Test by test-0, Jan 4, 2010"> - <span class="tt-fh-oe">Title of image</span> </a> - <small> - <span class="category"> - <span class="age"> - 5 years ago - </span> - in <a title="Behoimi BE Animation Test by test-0, Jan 4, 2010" - href="http://www.deviantart.com/browse/all/digitalart/animation/">Animation</a> - </span> - <div class="commentcount"> - <a href="http://test-0.deviantart.com/art/Test#comments"> - <span class="iconcommentsstats"></span>9 Comments</a> - </div> - <a class="mlt-link" href="http://www.deviantart.com/morelikethis/149167425"> - <span class="mlt-icon"></span> <span class="mlt-text">More Like This</span> </a> - </span> - </small> <!-- TTT$ --> - </span> + <div id="page-1-results" class="page-results results-page-thumb torpedo-container"> + <span class="thumb wide" href="http://amai911.deviantart.com/art/Horse-195212845" + data-super-full-width="900" data-super-full-height="600"> + <a class="torpedo-thumb-link" href="https://url.of.image"> + <img data-sigil="torpedo-img" src="https://url.of.thumbnail" /> + </a> + <span class="info"><span class="title-wrap"><span class="title">Title of image</span></span> </div> """ response = mock.Mock(text=html) @@ -73,7 +43,7 @@ class TestDeviantartEngine(SearxTestCase): self.assertEqual(type(results), list) self.assertEqual(len(results), 1) self.assertEqual(results[0]['title'], 'Title of image') - self.assertEqual(results[0]['url'], 'http://url.of.result/2nd.part.of.url') + self.assertEqual(results[0]['url'], 'https://url.of.image') self.assertNotIn('content', results[0]) self.assertEqual(results[0]['thumbnail_src'], 'https://url.of.thumbnail') diff --git a/tests/unit/engines/test_duckduckgo.py b/tests/unit/engines/test_duckduckgo.py index 90cdc9d9e..cb866d396 100644 --- a/tests/unit/engines/test_duckduckgo.py +++ b/tests/unit/engines/test_duckduckgo.py @@ -12,6 +12,7 @@ class TestDuckduckgoEngine(SearxTestCase): dicto = defaultdict(dict) dicto['pageno'] = 1 dicto['language'] = 'de_CH' + dicto['time_range'] = '' params = duckduckgo.request(query, dicto) self.assertIn('url', params) self.assertIn(query, params['url']) diff --git a/tests/unit/engines/test_flickr.py b/tests/unit/engines/test_flickr.py index 8b39e922f..2d7472a92 100644 --- a/tests/unit/engines/test_flickr.py +++ b/tests/unit/engines/test_flickr.py @@ -27,7 +27,7 @@ class TestFlickrEngine(SearxTestCase): response = mock.Mock(text='{"data": []}') self.assertEqual(flickr.response(response), []) - json = """ + json = r""" { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", "photo": [ { "id": "15751017054", "owner": "66847915@N08", @@ -55,7 +55,7 @@ class TestFlickrEngine(SearxTestCase): self.assertTrue('Owner' in results[0]['content']) self.assertTrue('Description' in results[0]['content']) - json = """ + json = r""" { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", "photo": [ { "id": "15751017054", "owner": "66847915@N08", @@ -79,7 +79,7 @@ class TestFlickrEngine(SearxTestCase): self.assertTrue('Owner' in results[0]['content']) self.assertTrue('Description' in results[0]['content']) - json = """ + json = r""" { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", "photo": [ { "id": "15751017054", "owner": "66847915@N08", @@ -103,7 +103,7 @@ class TestFlickrEngine(SearxTestCase): self.assertTrue('Owner' in results[0]['content']) self.assertTrue('Description' in results[0]['content']) - json = """ + json = r""" { "photos": { "page": 1, "pages": "41001", "perpage": 100, "total": "4100032", "photo": [ { "id": "15751017054", "owner": "66847915@N08", @@ -130,7 +130,7 @@ class TestFlickrEngine(SearxTestCase): self.assertEqual(type(results), list) self.assertEqual(len(results), 0) - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.flickr.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_flickr_noapi.py b/tests/unit/engines/test_flickr_noapi.py index 3b337a2d8..42f38f90b 100644 --- a/tests/unit/engines/test_flickr_noapi.py +++ b/tests/unit/engines/test_flickr_noapi.py @@ -316,7 +316,7 @@ class TestFlickrNoapiEngine(SearxTestCase): self.assertEqual(len(results), 0) # garbage test - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.flickr.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_google.py b/tests/unit/engines/test_google.py index 37a83cae3..8e73e2ab7 100644 --- a/tests/unit/engines/test_google.py +++ b/tests/unit/engines/test_google.py @@ -19,6 +19,7 @@ class TestGoogleEngine(SearxTestCase): dicto = defaultdict(dict) dicto['pageno'] = 1 dicto['language'] = 'fr_FR' + dicto['time_range'] = '' params = google.request(query, dicto) self.assertIn('url', params) self.assertIn(query, params['url']) diff --git a/tests/unit/engines/test_google_images.py b/tests/unit/engines/test_google_images.py index 5f184e00c..1cfba60b3 100644 --- a/tests/unit/engines/test_google_images.py +++ b/tests/unit/engines/test_google_images.py @@ -11,6 +11,7 @@ class TestGoogleImagesEngine(SearxTestCase): dicto = defaultdict(dict) dicto['pageno'] = 1 dicto['safesearch'] = 1 + dicto['time_range'] = '' params = google_images.request(query, dicto) self.assertIn('url', params) self.assertIn(query, params['url']) diff --git a/tests/unit/engines/test_ina.py b/tests/unit/engines/test_ina.py index 2c87a0ff8..109a9592d 100644 --- a/tests/unit/engines/test_ina.py +++ b/tests/unit/engines/test_ina.py @@ -33,23 +33,23 @@ class TestInaEngine(SearxTestCase): <div class=\\"search-results--list\\"><div class=\\"media\\">\\n\ \\t\\t\\t\\t<a class=\\"media-left media-video premium xiti_click_action\\" \ data-xiti-params=\\"recherche_v4::resultats_conference_de_presse_du_general_de_gaulle::N\\" \ - href=\\"\/video\/CAF89035682\/conference-de-presse-du-general-de-gaulle-video.html\\">\\n\ - <img src=\\"https:\/\/www.ina.fr\/images_v2\/140x105\/CAF89035682.jpeg\\" \ + href=\\"\\/video\\/CAF89035682\\/conference-de-presse-du-general-de-gaulle-video.html\\">\\n\ + <img src=\\"https:\\/\\/www.ina.fr\\/images_v2\\/140x105\\/CAF89035682.jpeg\\" \ alt=\\"Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle \\">\\n\ - \\t\\t\\t\\t\\t<\/a>\\n\ + \\t\\t\\t\\t\\t<\\/a>\\n\ \\t\\t\\t\\t\\t<div class=\\"media-body\\">\\n\\t\\t\\t\\t\\t\\t<h3 class=\\"h3--title media-heading\\">\\n\ \\t\\t\\t\\t\\t\\t\\t<a class=\\"xiti_click_action\\" \ data-xiti-params=\\"recherche_v4::resultats_conference_de_presse_du_general_de_gaulle::N\\" \ - href=\\"\/video\/CAF89035682\/conference-de-presse-du-general-de-gaulle-video.html\\">\ - Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle <\/a>\\n\ - <\/h3>\\n\ - <div class=\\"media-body__info\\">\\n<span class=\\"broadcast\\">27\/11\/1967<\/span>\\n\ - <span class=\\"views\\">29321 vues<\/span>\\n\ - <span class=\\"duration\\">01h 33m 07s<\/span>\\n\ - <\/div>\\n\ + href=\\"\\/video\\/CAF89035682\\/conference-de-presse-du-general-de-gaulle-video.html\\">\ + Conf\\u00e9rence de presse du G\\u00e9n\\u00e9ral de Gaulle <\\/a>\\n\ + <\\/h3>\\n\ + <div class=\\"media-body__info\\">\\n<span class=\\"broadcast\\">27\\/11\\/1967<\\/span>\\n\ + <span class=\\"views\\">29321 vues<\\/span>\\n\ + <span class=\\"duration\\">01h 33m 07s<\\/span>\\n\ + <\\/div>\\n\ <p class=\\"media-body__summary\\">VERSION INTEGRALE DE LA CONFERENCE DE PRESSE DU GENERAL DE GAULLE . \ - - PA le Pr\\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...<\/p>\\n\ - <\/div>\\n<\/div><!-- \/.media -->\\n" + - PA le Pr\\u00e9sident DE GAULLE : il ouvre les bras et s'assied. DP journalis...<\\/p>\\n\ + <\\/div>\\n<\\/div><!-- \\/.media -->\\n" } """ response = mock.Mock(text=json) diff --git a/tests/unit/engines/test_mediawiki.py b/tests/unit/engines/test_mediawiki.py index 63f7da6b2..b86372700 100644 --- a/tests/unit/engines/test_mediawiki.py +++ b/tests/unit/engines/test_mediawiki.py @@ -118,7 +118,7 @@ class TestMediawikiEngine(SearxTestCase): self.assertEqual(type(results), list) self.assertEqual(len(results), 0) - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.mediawiki.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_mixcloud.py b/tests/unit/engines/test_mixcloud.py index a2ea47cf9..9c79a478e 100644 --- a/tests/unit/engines/test_mixcloud.py +++ b/tests/unit/engines/test_mixcloud.py @@ -55,7 +55,7 @@ class TestMixcloudEngine(SearxTestCase): self.assertEqual(results[0]['content'], 'User') self.assertTrue('http://www.mixcloud.com/user/this-is-the-url/' in results[0]['embedded']) - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.mixcloud.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_searchcode_code.py b/tests/unit/engines/test_searchcode_code.py index c0ac2025c..955aea111 100644 --- a/tests/unit/engines/test_searchcode_code.py +++ b/tests/unit/engines/test_searchcode_code.py @@ -63,7 +63,7 @@ class TestSearchcodeCodeEngine(SearxTestCase): self.assertEqual(results[0]['repository'], 'https://repo') self.assertEqual(results[0]['code_language'], 'cpp') - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.searchcode_code.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_searchcode_doc.py b/tests/unit/engines/test_searchcode_doc.py index b9dcf380b..7228613ed 100644 --- a/tests/unit/engines/test_searchcode_doc.py +++ b/tests/unit/engines/test_searchcode_doc.py @@ -61,7 +61,7 @@ class TestSearchcodeDocEngine(SearxTestCase): self.assertIn('test', results[0]['content']) self.assertIn('Description', results[0]['content']) - json = """ + json = r""" {"toto":[ {"id":200,"name":"Artist Name", "link":"http:\/\/www.searchcode_doc.com\/artist\/1217","type":"artist"} diff --git a/tests/unit/engines/test_wikidata.py b/tests/unit/engines/test_wikidata.py new file mode 100644 index 000000000..ec5f52ef9 --- /dev/null +++ b/tests/unit/engines/test_wikidata.py @@ -0,0 +1,504 @@ +# -*- coding: utf-8 -*- +from json import loads +from lxml.html import fromstring +from collections import defaultdict +import mock +from searx.engines import wikidata +from searx.testing import SearxTestCase + + +class TestWikidataEngine(SearxTestCase): + + def test_request(self): + query = 'test_query' + dicto = defaultdict(dict) + dicto['language'] = 'all' + params = wikidata.request(query, dicto) + self.assertIn('url', params) + self.assertIn(query, params['url']) + self.assertIn('wikidata.org', params['url']) + self.assertIn('en', params['url']) + + dicto['language'] = 'es_ES' + params = wikidata.request(query, dicto) + self.assertIn(query, params['url']) + self.assertIn('es', params['url']) + + # successful cases are not tested here to avoid sending additional requests + def test_response(self): + self.assertRaises(AttributeError, wikidata.response, None) + self.assertRaises(AttributeError, wikidata.response, []) + self.assertRaises(AttributeError, wikidata.response, '') + self.assertRaises(AttributeError, wikidata.response, '[]') + + response = mock.Mock(content='<html></html>', search_params={"language": "all"}) + self.assertEqual(wikidata.response(response), []) + + def test_getDetail(self): + response = {} + results = wikidata.getDetail(response, "Q123", "en", "en-US") + self.assertEqual(results, []) + + title_html = '<div><div class="wikibase-title-label">Test</div></div>' + html = """ + <div> + <div class="wikibase-entitytermsview-heading-description"> + </div> + <div> + <ul class="wikibase-sitelinklistview-listview"> + <li data-wb-siteid="enwiki"><a href="http://en.wikipedia.org/wiki/Test">Test</a></li> + </ul> + </div> + </div> + """ + response = {"parse": {"displaytitle": title_html, "text": html}} + + results = wikidata.getDetail(response, "Q123", "en", "en-US") + self.assertEqual(len(results), 1) + self.assertEqual(results[0]['url'], 'https://en.wikipedia.org/wiki/Test') + + title_html = """ + <div> + <div class="wikibase-title-label"> + <span lang="en">Test</span> + <sup class="wb-language-fallback-indicator">English</sup> + </div> + </div> + """ + html = """ + <div> + <div class="wikibase-entitytermsview-heading-description"> + <span lang="en">Description</span> + <sup class="wb-language-fallback-indicator">English</sup> + </div> + <div id="P856"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P856"> + <span lang="en">official website</span> + <sup class="wb-language-fallback-indicator">English</sup> + </a> + </div> + <div class="wikibase-statementview-mainsnak"> + <a class="external free" href="https://officialsite.com"> + https://officialsite.com + </a> + </div> + </div> + <div> + <ul class="wikibase-sitelinklistview-listview"> + <li data-wb-siteid="enwiki"><a href="http://en.wikipedia.org/wiki/Test">Test</a></li> + </ul> + </div> + </div> + """ + response = {"parse": {"displaytitle": title_html, "text": html}} + + results = wikidata.getDetail(response, "Q123", "yua", "yua_MX") + self.assertEqual(len(results), 2) + self.assertEqual(results[0]['title'], 'Official website') + self.assertEqual(results[0]['url'], 'https://officialsite.com') + + self.assertEqual(results[1]['infobox'], 'Test') + self.assertEqual(results[1]['id'], None) + self.assertEqual(results[1]['content'], 'Description') + self.assertEqual(results[1]['attributes'], []) + self.assertEqual(results[1]['urls'][0]['title'], 'Official website') + self.assertEqual(results[1]['urls'][0]['url'], 'https://officialsite.com') + self.assertEqual(results[1]['urls'][1]['title'], 'Wikipedia (en)') + self.assertEqual(results[1]['urls'][1]['url'], 'https://en.wikipedia.org/wiki/Test') + + def test_add_image(self): + image_src = wikidata.add_image(fromstring("<div></div>")) + self.assertEqual(image_src, None) + + html = u""" + <div> + <div id="P18"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P18"> + image + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="https://commons.wikimedia.org/wiki/File:image.png"> + image.png + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + + image_src = wikidata.add_image(html_etree) + self.assertEqual(image_src, + "https://commons.wikimedia.org/wiki/Special:FilePath/image.png?width=500&height=400") + + html = u""" + <div> + <div id="P2910"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P2910"> + icon + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="https://commons.wikimedia.org/wiki/File:icon.png"> + icon.png + </a> + </div> + </div> + </div> + </div> + </div> + </div> + <div id="P154"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P154"> + logo + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="https://commons.wikimedia.org/wiki/File:logo.png"> + logo.png + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + + image_src = wikidata.add_image(html_etree) + self.assertEqual(image_src, + "https://commons.wikimedia.org/wiki/Special:FilePath/logo.png?width=500&height=400") + + def test_add_attribute(self): + html = u""" + <div> + <div id="P27"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P27"> + country of citizenship + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="/wiki/Q145"> + United Kingdom + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + attributes = [] + html_etree = fromstring(html) + + wikidata.add_attribute(attributes, html_etree, "Fail") + self.assertEqual(attributes, []) + + wikidata.add_attribute(attributes, html_etree, "P27") + self.assertEqual(len(attributes), 1) + self.assertEqual(attributes[0]["label"], "Country of citizenship") + self.assertEqual(attributes[0]["value"], "United Kingdom") + + html = u""" + <div> + <div id="P569"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P569"> + date of birth + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + 27 January 1832 + <sup class="wb-calendar-name"> + Gregorian + </sup> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + attributes = [] + html_etree = fromstring(html) + wikidata.add_attribute(attributes, html_etree, "P569", date=True) + self.assertEqual(len(attributes), 1) + self.assertEqual(attributes[0]["label"], "Date of birth") + self.assertEqual(attributes[0]["value"], "27 January 1832") + + html = u""" + <div> + <div id="P6"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P27"> + head of government + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-normal"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="/wiki/Q206"> + Old Prime Minister + </a> + </div> + </div> + </div> + </div> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-rankselector"> + <span class="wikibase-rankselector-preferred"></span> + </div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a href="/wiki/Q3099714"> + Actual Prime Minister + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + attributes = [] + html_etree = fromstring(html) + wikidata.add_attribute(attributes, html_etree, "P6") + self.assertEqual(len(attributes), 1) + self.assertEqual(attributes[0]["label"], "Head of government") + self.assertEqual(attributes[0]["value"], "Old Prime Minister, Actual Prime Minister") + + attributes = [] + html_etree = fromstring(html) + wikidata.add_attribute(attributes, html_etree, "P6", trim=True) + self.assertEqual(len(attributes), 1) + self.assertEqual(attributes[0]["value"], "Actual Prime Minister") + + def test_add_url(self): + html = u""" + <div> + <div id="P856"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P856"> + official website + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a class="external free" href="https://searx.me"> + https://searx.me/ + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + urls = [] + html_etree = fromstring(html) + wikidata.add_url(urls, html_etree, 'P856') + self.assertEquals(len(urls), 1) + self.assertIn({'title': 'Official website', 'url': 'https://searx.me/'}, urls) + urls = [] + results = [] + wikidata.add_url(urls, html_etree, 'P856', 'custom label', results=results) + self.assertEquals(len(urls), 1) + self.assertEquals(len(results), 1) + self.assertIn({'title': 'custom label', 'url': 'https://searx.me/'}, urls) + self.assertIn({'title': 'custom label', 'url': 'https://searx.me/'}, results) + + html = u""" + <div> + <div id="P856"> + <div class="wikibase-statementgroupview-property-label"> + <a href="/wiki/Property:P856"> + official website + </a> + </div> + <div class="wikibase-statementlistview"> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a class="external free" href="http://www.worldofwarcraft.com"> + http://www.worldofwarcraft.com + </a> + </div> + </div> + </div> + </div> + <div class="wikibase-statementview listview-item"> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a class="external free" href="http://eu.battle.net/wow/en/"> + http://eu.battle.net/wow/en/ + </a> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + """ + urls = [] + html_etree = fromstring(html) + wikidata.add_url(urls, html_etree, 'P856') + self.assertEquals(len(urls), 2) + self.assertIn({'title': 'Official website', 'url': 'http://www.worldofwarcraft.com'}, urls) + self.assertIn({'title': 'Official website', 'url': 'http://eu.battle.net/wow/en/'}, urls) + + def test_get_imdblink(self): + html = u""" + <div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a class="wb-external-id" href="http://www.imdb.com/tt0433664"> + tt0433664 + </a> + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + imdblink = wikidata.get_imdblink(html_etree, 'https://www.imdb.com/') + + html = u""" + <div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + <a class="wb-external-id" + href="href="http://tools.wmflabs.org/...http://www.imdb.com/&id=nm4915994""> + nm4915994 + </a> + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + imdblink = wikidata.get_imdblink(html_etree, 'https://www.imdb.com/') + self.assertIn('https://www.imdb.com/name/nm4915994', imdblink) + + def test_get_geolink(self): + html = u""" + <div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + 60°N, 40°E + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + geolink = wikidata.get_geolink(html_etree) + self.assertIn('https://www.openstreetmap.org/', geolink) + self.assertIn('lat=60&lon=40', geolink) + + html = u""" + <div> + <div class="wikibase-statementview-mainsnak"> + <div> + <div class="wikibase-snakview-value"> + 34°35'59"S, 58°22'55"W + </div> + </div> + </div> + </div> + """ + html_etree = fromstring(html) + geolink = wikidata.get_geolink(html_etree) + self.assertIn('https://www.openstreetmap.org/', geolink) + self.assertIn('lat=-34.59', geolink) + self.assertIn('lon=-58.38', geolink) + + def test_get_wikilink(self): + html = """ + <div> + <div> + <ul class="wikibase-sitelinklistview-listview"> + <li data-wb-siteid="arwiki"><a href="http://ar.wikipedia.org/wiki/Test">Test</a></li> + <li data-wb-siteid="enwiki"><a href="http://en.wikipedia.org/wiki/Test">Test</a></li> + </ul> + </div> + <div> + <ul class="wikibase-sitelinklistview-listview"> + <li data-wb-siteid="enwikiquote"><a href="https://en.wikiquote.org/wiki/Test">Test</a></li> + </ul> + </div> + </div> + """ + html_etree = fromstring(html) + wikilink = wikidata.get_wikilink(html_etree, 'nowiki') + self.assertEqual(wikilink, None) + wikilink = wikidata.get_wikilink(html_etree, 'enwiki') + self.assertEqual(wikilink, 'https://en.wikipedia.org/wiki/Test') + wikilink = wikidata.get_wikilink(html_etree, 'arwiki') + self.assertEqual(wikilink, 'https://ar.wikipedia.org/wiki/Test') + wikilink = wikidata.get_wikilink(html_etree, 'enwikiquote') + self.assertEqual(wikilink, 'https://en.wikiquote.org/wiki/Test') diff --git a/tests/unit/engines/test_wolframalpha_noapi.py b/tests/unit/engines/test_wolframalpha_noapi.py index 068c1be79..a8f73470e 100644 --- a/tests/unit/engines/test_wolframalpha_noapi.py +++ b/tests/unit/engines/test_wolframalpha_noapi.py @@ -28,7 +28,7 @@ class TestWolframAlphaNoAPIEngine(SearxTestCase): request = Request(headers={'Referer': referer_url}) # test failure - json = ''' + json = r''' {"queryresult" : { "success" : false, "error" : false, @@ -42,7 +42,7 @@ class TestWolframAlphaNoAPIEngine(SearxTestCase): self.assertEqual(wolframalpha_noapi.response(response), []) # test basic case - json = ''' + json = r''' {"queryresult" : { "success" : true, "error" : false, @@ -143,7 +143,7 @@ class TestWolframAlphaNoAPIEngine(SearxTestCase): self.assertEqual('Wolfram|Alpha', results[1]['title']) # test calc - json = """ + json = r""" {"queryresult" : { "success" : true, "error" : false, diff --git a/tests/unit/engines/test_yahoo.py b/tests/unit/engines/test_yahoo.py index 11ef9db22..1226f92ab 100644 --- a/tests/unit/engines/test_yahoo.py +++ b/tests/unit/engines/test_yahoo.py @@ -28,6 +28,7 @@ class TestYahooEngine(SearxTestCase): query = 'test_query' dicto = defaultdict(dict) dicto['pageno'] = 1 + dicto['time_range'] = '' dicto['language'] = 'fr_FR' params = yahoo.request(query, dicto) self.assertIn('url', params) diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py index cbf0da471..1762d66b6 100644 --- a/tests/unit/test_webapp.py +++ b/tests/unit/test_webapp.py @@ -38,7 +38,7 @@ class ViewsTestCase(SearxTestCase): suggestions=set(), infoboxes=[], results=self.test_results, - number_of_results=len(self.test_results), + results_number=lambda: 3, results_length=lambda: len(self.test_results)) webapp.Search.search = search_mock @@ -96,7 +96,7 @@ class ViewsTestCase(SearxTestCase): ) self.assertIn( - '<opensearch:totalResults>2</opensearch:totalResults>', + '<opensearch:totalResults>3</opensearch:totalResults>', result.data ) |