# -*- coding: utf-8 -*-
import re
import unittest
import markdown
from mock import patch
from mdx_oembed.extension import OEMBED_LINK_RE
class OEmbedPatternRegexTestCase(unittest.TestCase):
def setUp(self):
self.re = re.compile(OEMBED_LINK_RE)
def test_ignore_relative_image_link(self):
text = ''
match = self.re.match(text)
self.assertIsNone(match)
def test_ignore_absolute_image_link(self):
text = ''
match = self.re.match(text)
self.assertIsNone(match)
def test_ignore_png_image_link(self):
text = ''
match = self.re.match(text)
self.assertIsNone(match)
def test_ignore_jpg_image_link(self):
text = ''
match = self.re.match(text)
self.assertIsNone(match)
def test_ignore_gif_image_link(self):
text = ''
match = self.re.match(text)
self.assertIsNone(match)
def test_find_youtube_link(self):
text = ''
match = self.re.match(text)
self.assertIsNotNone(match)
def test_find_youtube_short_link(self):
text = ''
match = self.re.match(text)
self.assertIsNotNone(match)
class OEmbedExtensionTestCase(unittest.TestCase):
def setUp(self):
self.markdown = markdown.Markdown(extensions=['oembed'])
def assert_convert(self, text, expected):
with patch('oembed.OEmbedEndpoint') as MockOEmbedEndpoint:
MockOEmbedEndpoint.get.return_value = expected
output = self.markdown.convert(text)
self.assertEqual(output, expected)
class IgnoredTestCase(OEmbedExtensionTestCase):
"""
The OEmbedExtension should ignore these tags allowing markdown's image
processor to find and handle them.
"""
def test_relative(self):
text = ''
expected = '

'
output = self.markdown.convert(text)
self.assertEqual(output, expected)
def test_slash_relative(self):
text = ''
expected = '
'
output = self.markdown.convert(text)
self.assertEqual(output, expected)
def test_absolute(self):
text = ''
expected = '
'
output = self.markdown.convert(text)
self.assertEqual(output, expected)
class YoutubeTestCase(OEmbedExtensionTestCase):
"""
The OEmbedExtension should handle embedding for these cases.
"""
def test_youtube_link(self):
"""
YouTube video link.
"""
text = ''
expected = ''
output = self.markdown.convert(text)
self.assertEqual(output, expected)
def test_youtube_short_link(self):
"""
Short format YouTube video link.
"""
text = ''
expected = ''
output = self.markdown.convert(text)
self.assertEqual(output, expected)
def test_vimeo_link(self):
"""
Vimeo video link.
"""
text = ''
expected = ''
output = self.markdown.convert(text)
self.assertEqual(output, expected)
class LimitedOEmbedExtensionTestCase(unittest.TestCase):
def setUp(self):
self.markdown = markdown.Markdown(
extensions=['oembed'],
extension_configs={
'oembed': {
'allowed_endpoints': ['youtube',],
}
})
def test_youtube_link(self):
"""
YouTube video link.
"""
text = ''
expected = ''
output = self.markdown.convert(text)
self.assertEqual(output, expected)
def test_youtube_short_link(self):
"""
Short format YouTube video link.
"""
text = ''
expected = ''
self.assert_convert(text, expected)
def test_vimeo_link(self):
"""
Vimeo video link.
"""
text = ''
expected = '
'
self.assert_convert(text, expected)
if __name__ == "__main__":
unittest.main()