test_deezer.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from collections import defaultdict
  2. import mock
  3. from searx.engines import deezer
  4. from searx.testing import SearxTestCase
  5. class TestDeezerEngine(SearxTestCase):
  6. def test_request(self):
  7. query = 'test_query'
  8. dicto = defaultdict(dict)
  9. dicto['pageno'] = 0
  10. params = deezer.request(query, dicto)
  11. self.assertTrue('url' in params)
  12. self.assertTrue(query in params['url'])
  13. self.assertTrue('deezer.com' in params['url'])
  14. def test_response(self):
  15. self.assertRaises(AttributeError, deezer.response, None)
  16. self.assertRaises(AttributeError, deezer.response, [])
  17. self.assertRaises(AttributeError, deezer.response, '')
  18. self.assertRaises(AttributeError, deezer.response, '[]')
  19. response = mock.Mock(text='{}')
  20. self.assertEqual(deezer.response(response), [])
  21. response = mock.Mock(text='{"data": []}')
  22. self.assertEqual(deezer.response(response), [])
  23. json = """
  24. {"data":[
  25. {"id":100, "title":"Title of track",
  26. "link":"http:\/\/www.deezer.com\/track\/1094042","duration":232,
  27. "artist":{"id":200,"name":"Artist Name",
  28. "link":"http:\/\/www.deezer.com\/artist\/1217","type":"artist"},
  29. "album":{"id":118106,"title":"Album Title","type":"album"},"type":"track"}
  30. ]}
  31. """
  32. response = mock.Mock(text=json)
  33. results = deezer.response(response)
  34. self.assertEqual(type(results), list)
  35. self.assertEqual(len(results), 1)
  36. self.assertEqual(results[0]['title'], 'Title of track')
  37. self.assertEqual(results[0]['url'], 'http://www.deezer.com/track/1094042')
  38. self.assertEqual(results[0]['content'], 'Artist Name • Album Title • Title of track')
  39. json = """
  40. {"data":[
  41. {"id":200,"name":"Artist Name",
  42. "link":"http:\/\/www.deezer.com\/artist\/1217","type":"artist"}
  43. ]}
  44. """
  45. response = mock.Mock(text=json)
  46. results = deezer.response(response)
  47. self.assertEqual(type(results), list)
  48. self.assertEqual(len(results), 0)