test_flickr.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from . import flickr
  2. try:
  3. from unittest.mock import patch
  4. except ImportError:
  5. from mock import patch
  6. import os
  7. import pytest
  8. import re
  9. PLUGIN_DIR = os.path.dirname(__file__)
  10. TEST_DATA_DIR = os.path.join(PLUGIN_DIR, 'test_data')
  11. @pytest.mark.parametrize('input,expected', [
  12. ('18873146680 large "test 1"',
  13. dict(photo_id='18873146680',
  14. size='large',
  15. alt='test 1')),
  16. ('18873146680 large \'test 1\'',
  17. dict(photo_id='18873146680',
  18. size='large',
  19. alt='test 1')),
  20. ('18873143536360 medium "test number two"',
  21. dict(photo_id='18873143536360',
  22. size='medium',
  23. alt='test number two')),
  24. ('18873143536360 small "test number 3"',
  25. dict(photo_id='18873143536360',
  26. size='small',
  27. alt='test number 3')),
  28. ('18873143536360 "test 4"',
  29. dict(photo_id='18873143536360',
  30. size=None,
  31. alt='test 4')),
  32. ('18873143536360',
  33. dict(photo_id='18873143536360',
  34. size=None,
  35. alt=None)),
  36. ('123456 small',
  37. dict(photo_id='123456',
  38. size='small',
  39. alt=None))
  40. ])
  41. def test_regex(input, expected):
  42. assert re.match(flickr.PARSE_SYNTAX, input).groupdict() == expected
  43. @pytest.mark.parametrize('input,expected', [
  44. (['1', 'server1', '1', 'secret1', 'small'],
  45. 'https://farm1.staticflickr.com/server1/1_secret1_n.jpg'),
  46. (['2', 'server2', '2', 'secret2', 'medium'],
  47. 'https://farm2.staticflickr.com/server2/2_secret2_c.jpg'),
  48. (['3', 'server3', '3', 'secret3', 'large'],
  49. 'https://farm3.staticflickr.com/server3/3_secret3_b.jpg')
  50. ])
  51. def test_source_url(input, expected):
  52. assert flickr.source_url(
  53. input[0], input[1], input[2], input[3], input[4]) == expected
  54. @patch('liquid_tags.flickr.urlopen')
  55. def test_generage_html(mock_urlopen):
  56. # mock the return to deliver the flickr.json file instead
  57. with open(TEST_DATA_DIR + '/flickr.json', 'rb') as f:
  58. mock_urlopen.return_value.read.return_value = f.read()
  59. attrs = dict(
  60. photo_id='1234567',
  61. size='large',
  62. alt='this is a test'
  63. )
  64. expected = ('<a href="https://www.flickr.com/photos/'
  65. 'marvinxsteadfast/18841055371/">'
  66. '<img src="https://farm6.staticflickr.com/5552/1234567_'
  67. '17ac287217_b.jpg" alt="this is a test"></a>')
  68. assert flickr.generate_html(attrs, 'abcdef') == expected