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