test_vimeo.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from collections import defaultdict
  2. import mock
  3. from searx.engines import vimeo
  4. from searx.testing import SearxTestCase
  5. class TestVimeoEngine(SearxTestCase):
  6. def test_request(self):
  7. query = 'test_query'
  8. dicto = defaultdict(dict)
  9. dicto['pageno'] = 0
  10. params = vimeo.request(query, dicto)
  11. self.assertTrue('url' in params)
  12. self.assertTrue(query in params['url'])
  13. self.assertTrue('vimeo.com' in params['url'])
  14. def test_response(self):
  15. self.assertRaises(AttributeError, vimeo.response, None)
  16. self.assertRaises(AttributeError, vimeo.response, [])
  17. self.assertRaises(AttributeError, vimeo.response, '')
  18. self.assertRaises(AttributeError, vimeo.response, '[]')
  19. response = mock.Mock(text='<html></html>')
  20. self.assertEqual(vimeo.response(response), [])
  21. html = """
  22. <div id="browse_content" class="" data-search-id="696d5f8366914ec4ffec33cf7652de384976d4f4">
  23. <ol class="js-browse_list clearfix browse browse_videos browse_videos_thumbnails kane"
  24. data-stream="c2VhcmNoOjo6ZGVzYzp7InF1ZXJ5IjoidGVzdCJ9">
  25. <li id="clip_100785455" data-start-page="/search/page:1/sort:relevant/" data-position="1">
  26. <a href="/videoid" title="Futurama 3d (test shot)">
  27. <img src="http://image.url.webp"
  28. srcset="http://i.vimeocdn.com/video/482375085_590x332.webp 2x" alt=""
  29. class="thumbnail thumbnail_lg_wide">
  30. <div class="data">
  31. <p class="title">
  32. This is the title
  33. </p>
  34. <p class="meta">
  35. <time datetime="2014-07-15T04:16:27-04:00"
  36. title="mardi 15 juillet 2014 04:16">Il y a 6 mois</time>
  37. </p>
  38. </div>
  39. </a>
  40. </li>
  41. </ol>
  42. </div>
  43. """
  44. response = mock.Mock(text=html)
  45. results = vimeo.response(response)
  46. self.assertEqual(type(results), list)
  47. self.assertEqual(len(results), 1)
  48. self.assertEqual(results[0]['title'], 'This is the title')
  49. self.assertEqual(results[0]['url'], 'http://vimeo.com/videoid')
  50. self.assertEqual(results[0]['content'], '')
  51. self.assertEqual(results[0]['thumbnail'], 'http://image.url.webp')
  52. self.assertIn('/videoid', results[0]['embedded'])
  53. html = """
  54. <ol class="js-browse_list clearfix browse browse_videos browse_videos_thumbnails kane"
  55. data-stream="c2VhcmNoOjo6ZGVzYzp7InF1ZXJ5IjoidGVzdCJ9">
  56. <li id="clip_100785455" data-start-page="/search/page:1/sort:relevant/" data-position="1">
  57. <a href="/videoid" title="Futurama 3d (test shot)">
  58. <img src="http://image.url.webp"
  59. srcset="http://i.vimeocdn.com/video/482375085_590x332.webp 2x" alt=""
  60. class="thumbnail thumbnail_lg_wide">
  61. <div class="data">
  62. <p class="title">
  63. This is the title
  64. </p>
  65. <p class="meta">
  66. <time datetime="2014-07-15T04:16:27-04:00"
  67. title="mardi 15 juillet 2014 04:16">Il y a 6 mois</time>
  68. </p>
  69. </div>
  70. </a>
  71. </li>
  72. </ol>
  73. """
  74. response = mock.Mock(text=html)
  75. results = vimeo.response(response)
  76. self.assertEqual(type(results), list)
  77. self.assertEqual(len(results), 0)