mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-04 03:27:06 -05:00 
			
		
		
		
	Add match_language function in utils to match any user given language code with a list of engine's supported languages. Also add language_aliases dict on each engine to translate standard language codes into the custom codes used by the engine.
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from collections import defaultdict
 | 
						|
import mock
 | 
						|
from searx.engines import archlinux
 | 
						|
from searx.testing import SearxTestCase
 | 
						|
 | 
						|
domains = {
 | 
						|
    'en': 'https://wiki.archlinux.org',
 | 
						|
    'de': 'https://wiki.archlinux.de',
 | 
						|
    'fr': 'https://wiki.archlinux.fr',
 | 
						|
    'ja': 'https://wiki.archlinuxjp.org',
 | 
						|
    'ro': 'http://wiki.archlinux.ro',
 | 
						|
    'tr': 'http://archtr.org/wiki'
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
class TestArchLinuxEngine(SearxTestCase):
 | 
						|
 | 
						|
    def test_request(self):
 | 
						|
        query = 'test_query'
 | 
						|
        dic = defaultdict(dict)
 | 
						|
        dic['pageno'] = 1
 | 
						|
        dic['language'] = 'en-US'
 | 
						|
        params = archlinux.request(query, dic)
 | 
						|
        self.assertTrue('url' in params)
 | 
						|
        self.assertTrue(query in params['url'])
 | 
						|
        self.assertTrue('wiki.archlinux.org' in params['url'])
 | 
						|
 | 
						|
        for lang, name in archlinux.main_langs:
 | 
						|
            dic['language'] = lang
 | 
						|
            params = archlinux.request(query, dic)
 | 
						|
            self.assertTrue(name in params['url'])
 | 
						|
 | 
						|
        for lang, domain in domains.items():
 | 
						|
            dic['language'] = lang
 | 
						|
            params = archlinux.request(query, dic)
 | 
						|
            self.assertTrue(domain in params['url'])
 | 
						|
 | 
						|
    def test_response(self):
 | 
						|
        response = mock.Mock(text='<html></html>',
 | 
						|
                             search_params={'language': 'en_US'})
 | 
						|
        self.assertEqual(archlinux.response(response), [])
 | 
						|
 | 
						|
        html = """
 | 
						|
        <ul class="mw-search-results">
 | 
						|
          <li>
 | 
						|
          <div class="mw-search-result-heading">
 | 
						|
            <a href="/index.php/ATI" title="ATI">ATI</a>
 | 
						|
          </div>
 | 
						|
          <div class="searchresult">
 | 
						|
            Lorem ipsum dolor sit amet
 | 
						|
          </div>
 | 
						|
          <div class="mw-search-result-data">
 | 
						|
            30 KB (4,630 words) - 19:04, 17 March 2016</div>
 | 
						|
          </li>
 | 
						|
          <li>
 | 
						|
          <div class="mw-search-result-heading">
 | 
						|
            <a href="/index.php/Frequently_asked_questions" title="Frequently asked questions">
 | 
						|
              Frequently asked questions
 | 
						|
            </a>
 | 
						|
          </div>
 | 
						|
          <div class="searchresult">
 | 
						|
            CPUs with AMDs instruction set "AMD64"
 | 
						|
          </div>
 | 
						|
          <div class="mw-search-result-data">
 | 
						|
            17 KB (2,722 words) - 20:13, 21 March 2016
 | 
						|
          </div>
 | 
						|
          </li>
 | 
						|
          <li>
 | 
						|
          <div class="mw-search-result-heading">
 | 
						|
            <a href="/index.php/CPU_frequency_scaling" title="CPU frequency scaling">CPU frequency scaling</a>
 | 
						|
          </div>
 | 
						|
          <div class="searchresult">
 | 
						|
            ondemand for AMD and older Intel CPU
 | 
						|
          </div>
 | 
						|
          <div class="mw-search-result-data">
 | 
						|
            15 KB (2,319 words) - 23:46, 16 March 2016
 | 
						|
          </div>
 | 
						|
          </li>
 | 
						|
        </ul>
 | 
						|
        """
 | 
						|
 | 
						|
        expected = [
 | 
						|
            {
 | 
						|
                'title': 'ATI',
 | 
						|
                'url': 'https://wiki.archlinux.org/index.php/ATI'
 | 
						|
            },
 | 
						|
            {
 | 
						|
                'title': 'Frequently asked questions',
 | 
						|
                'url': 'https://wiki.archlinux.org/index.php/Frequently_asked_questions'
 | 
						|
            },
 | 
						|
            {
 | 
						|
                'title': 'CPU frequency scaling',
 | 
						|
                'url': 'https://wiki.archlinux.org/index.php/CPU_frequency_scaling'
 | 
						|
            }
 | 
						|
        ]
 | 
						|
 | 
						|
        response = mock.Mock(text=html)
 | 
						|
        response.search_params = {
 | 
						|
            'language': 'en_US'
 | 
						|
        }
 | 
						|
        results = archlinux.response(response)
 | 
						|
 | 
						|
        self.assertEqual(type(results), list)
 | 
						|
        self.assertEqual(len(results), len(expected))
 | 
						|
 | 
						|
        i = 0
 | 
						|
        for exp in expected:
 | 
						|
            res = results[i]
 | 
						|
            i += 1
 | 
						|
            for key, value in exp.items():
 | 
						|
                self.assertEqual(res[key], value)
 |