# -*- coding: utf-8 -*-
from collections import defaultdict
import mock
from searx.engines import arxiv
from searx.testing import SearxTestCase
class TestBaseEngine(SearxTestCase):
    def test_request(self):
        query = 'test_query'.encode('utf-8')
        dicto = defaultdict(dict)
        dicto['pageno'] = 1
        params = arxiv.request(query, dicto)
        self.assertIn('url', params)
        self.assertIn('export.arxiv.org/api/', params['url'])
    def test_response(self):
        self.assertRaises(AttributeError, arxiv.response, None)
        self.assertRaises(AttributeError, arxiv.response, [])
        self.assertRaises(AttributeError, arxiv.response, '')
        self.assertRaises(AttributeError, arxiv.response, '[]')
        response = mock.Mock(content=b'''
''')
        self.assertEqual(arxiv.response(response), [])
        xml_mock = b'''
  ArXiv Query: search_query=all:test_query&id_list=&start=0&max_results=1
  http://arxiv.org/api/1
  2000-01-21T00:00:00-01:00
  1
  0
  1
  
    http://arxiv.org/1
    2000-01-01T00:00:01Z
    2000-01-01T00:00:01Z
    Mathematical proof.
    Mathematical formula.
    
      A. B.
    
    
    
    
    
  
'''
        response = mock.Mock(content=xml_mock)
        results = arxiv.response(response)
        self.assertEqual(type(results), list)
        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['title'], 'Mathematical proof.')
        self.assertEqual(results[0]['content'], 'Mathematical formula.')