176 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			176 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") |