diff --git a/wagtail/wagtailembeds/blocks.py b/wagtail/wagtailembeds/blocks.py new file mode 100644 index 000000000..8a82a9d87 --- /dev/null +++ b/wagtail/wagtailembeds/blocks.py @@ -0,0 +1,13 @@ +from django import forms + +from wagtail.wagtailadmin import blocks + +from wagtail.wagtailembeds.format import embed_to_frontend_html + + +class EmbedBlock(blocks.FieldBlock): + def __init__(self, **kwargs): + super(EmbedBlock, self).__init__(forms.URLField(), **kwargs) + + def render_basic(self, value): + return embed_to_frontend_html(value) diff --git a/wagtail/wagtailembeds/tests.py b/wagtail/wagtailembeds/tests.py index 4ec2e7637..93231372e 100644 --- a/wagtail/wagtailembeds/tests.py +++ b/wagtail/wagtailembeds/tests.py @@ -25,6 +25,8 @@ from wagtail.wagtailembeds.embeds import ( oembed as wagtail_oembed, ) from wagtail.wagtailembeds.templatetags.wagtailembeds_tags import embed as embed_filter +from wagtail.wagtailembeds.blocks import EmbedBlock +from wagtail.wagtailembeds.models import Embed class TestEmbeds(TestCase): @@ -303,3 +305,18 @@ class TestEmbedFilter(TestCase): context = template.Context() result = temp.render(context) self.assertEqual(result, '') + + +class TestEmbedBlock(TestCase): + @patch('wagtail.wagtailembeds.format.get_embed') + def test_render(self, get_embed): + get_embed.return_value = Embed(html='

Hello world!

') + + block = EmbedBlock() + html = block.render('http://www.example.com') + + # Check that get_embed was called correctly + get_embed.assert_any_call('http://www.example.com') + + # Check that the embed was in the returned HTML + self.assertIn('

Hello world!

', html)