Ponysearch/tests/unit/engines/test_scanr_structures.py
François Revol 1dba6dcbac Add ScanR structures search engine
In theory ScanR should also search for projects but the API is different,
so we'd need another engine.
2016-07-12 15:47:04 +02:00

175 lines
6.8 KiB
Python

from collections import defaultdict
import mock
from searx.engines import scanr_structures
from searx.testing import SearxTestCase
class TestScanrStructuresEngine(SearxTestCase):
def test_request(self):
query = 'test_query'
dicto = defaultdict(dict)
dicto['pageno'] = 1
params = scanr_structures.request(query, dicto)
self.assertIn('url', params)
self.assertIn(query, params['data'])
self.assertIn('scanr.enseignementsup-recherche.gouv.fr', params['url'])
def test_response(self):
self.assertRaises(AttributeError, scanr_structures.response, None)
self.assertRaises(AttributeError, scanr_structures.response, [])
self.assertRaises(AttributeError, scanr_structures.response, '')
self.assertRaises(AttributeError, scanr_structures.response, '[]')
response = mock.Mock(text='{}')
self.assertEqual(scanr_structures.response(response), [])
response = mock.Mock(text='{"data": []}')
self.assertEqual(scanr_structures.response(response), [])
json = u"""
{
"request":
{
"query":"test_query",
"page":1,
"pageSize":20,
"sortOrder":"RELEVANCY",
"sortDirection":"ASC",
"searchField":"ALL",
"from":0
},
"total":2471,
"results":[
{
"id":"200711886U",
"label":"Laboratoire d'Informatique de Grenoble",
"kind":"RNSR",
"publicEntity":true,
"address":{"city":"Grenoble","departement":"38"},
"logo":"/static/logos/200711886U.png",
"acronym":"LIG",
"type":{"code":"UR","label":"Unit\xe9 de recherche"},
"level":2,
"institutions":[
{
"id":"193819125",
"label":"Grenoble INP",
"acronym":"IPG",
"code":"UMR 5217"
},
{
"id":"130021397",
"label":"Universit\xe9 de Grenoble Alpes",
"acronym":"UGA",
"code":"UMR 5217"
},
{
"id":"180089013",
"label":"Centre national de la recherche scientifique",
"acronym":"CNRS",
"code":"UMR 5217"
},
{
"id":"180089047",
"label":"Institut national de recherche en informatique et en automatique",
"acronym":"Inria",
"code":"UMR 5217"
}
],
"highlights":[
{
"type":"projects",
"value":"linguicielles d\xe9velopp\xe9s jusqu'ici par le GETALP\
du <strong>LIG</strong> en tant que prototypes op\xe9rationnels.\
\\r\\nDans le contexte"
},
{
"type":"acronym",
"value":"<strong>LIG</strong>"
},
{
"type":"websiteContents",
"value":"S\xe9lection\\nListe structures\\nD\xe9tail\\n\
Accueil\\n200711886U : <strong>LIG</strong>\
Laboratoire d'Informatique de Grenoble Unit\xe9 de recherche"},
{
"type":"publications",
"value":"de noms. Nous avons d'abord d\xe9velopp\xe9 LOOV \
(pour <strong>Lig</strong> Overlaid OCR in Vid\xe9o), \
un outil d'extraction des"
}
]
},
{
"id":"199511665F",
"label":"Laboratoire Bordelais de Recherche en Informatique",
"kind":"RNSR",
"publicEntity":true,
"address":{"city":"Talence","departement":"33"},
"logo":"/static/logos/199511665F.png",
"acronym":"LaBRI",
"type":{"code":"UR","label":"Unit\xe9 de recherche"},
"level":2,
"institutions":[
{
"id":"130006356",
"label":"Institut polytechnique de Bordeaux",
"acronym":"IPB",
"code":"UMR 5800"
},
{
"id":"130018351",
"label":"Universit\xe9 de Bordeaux",
"acronym":null,
"code":"UMR 5800"
},
{
"id":"180089013",
"label":"Centre national de la recherche scientifique",
"acronym":"CNRS",
"code":"UMR 5800"
},
{
"id":"180089047",
"label":"Institut national de recherche en informatique et en automatique",
"acronym":"Inria",
"code":"UMR 5800"
}
],
"highlights":[
{
"type":"websiteContents",
"value":"Samia Kerdjoudj\\n2016-07-05\\nDouble-exponential\
and <strong>triple</strong>-exponential bounds for\
choosability problems parameterized"
},
{
"type":"publications",
"value":"de cam\xe9ras install\xe9es dans les lieux publiques \
a <strong>tripl\xe9</strong> en 2009, passant de 20 000 \
\xe0 60 000. Malgr\xe9 le"
}
]
}
]
}
"""
response = mock.Mock(text=json)
results = scanr_structures.response(response)
self.assertEqual(type(results), list)
self.assertEqual(len(results), 2)
self.assertEqual(results[0]['title'], u"Laboratoire d'Informatique de Grenoble")
self.assertEqual(results[0]['url'], 'https://scanr.enseignementsup-recherche.gouv.fr/structure/200711886U')
self.assertEqual(results[0]['content'],
u"linguicielles d\xe9velopp\xe9s jusqu'ici par le GETALP "
u"du LIG en tant que prototypes "
u"op\xe9rationnels. Dans le contexte")
self.assertEqual(results[1]['img_src'],
'https://scanr.enseignementsup-recherche.gouv.fr//static/logos/199511665F.png')
self.assertEqual(results[1]['content'],
"Samia Kerdjoudj 2016-07-05 Double-exponential and"
" triple-exponential bounds for "
"choosability problems parameterized")
self.assertEqual(results[1]['url'], 'https://scanr.enseignementsup-recherche.gouv.fr/structure/199511665F')
self.assertEqual(results[1]['title'], u"Laboratoire Bordelais de Recherche en Informatique")